您的位置:首页 > 移动开发 > Objective-C

JDBC第四天

2010-04-06 22:52 92 查看
单例模式:
 遵循单例模式的类,只能获取唯一的一个对象
 实现:无参构造私有,提供共有的获取唯一对象的方法
 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() :资源副本
   获取当前线程中所绑定的资源副本
 
   
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息