JDBC第四天

来源:互联网 发布:mysql 主流版本 编辑:程序博客网 时间:2024/05/22 22:19

单例模式:
 遵循单例模式的类,只能获取唯一的一个对象
 实现:无参构造私有,提供共有的获取唯一对象的方法
 JdbcUtil中getConnection() :Connection遵循单例模式
 if(conn == null){
  ....
  conn = DriverManager.getConnection(....);
 }
 return conn;
equals:
 public boolean equals(Object o){
  if(o == null){
   return false;
  }
  if(o == this)
   return true;
  if(!(o instanceof Person))
   return false;
  Person p = (Person)o;
  if(this.get***().equals(p.get***())...)
   return true;
  return false;
 }

Connection对象遵循单例模式,在多线程并发环境下,可能会出现数据不一致问题:
解决:
 使用synchronized控制线程并发
 synchronized可以修饰方法,和代码块
 修饰代码块时,需要执行代码块中的多线程争抢的资源(临界资源)
 使用synchronized注意:
  1 加锁的粒度,粒度越大,效率越低,安全性越高
       粒度越小,效率越高,安全性越低
  2 临界资源的确定
  3 线程之间通讯: wait/notify/notifyAll
   死锁
线程局部变量:
 ThreadLocal
 将临界资源复制,给每个线程一个自己独立的副本资源
 实现:
  set(对象副本):
   给当前的线程一个资源的副本
  get() :资源副本
   获取当前线程中所绑定的资源副本
 
   

原创粉丝点击