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() :资源副本
获取当前线程中所绑定的资源副本
遵循单例模式的类,只能获取唯一的一个对象
实现:无参构造私有,提供共有的获取唯一对象的方法
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() :资源副本
获取当前线程中所绑定的资源副本
相关文章推荐
- 【Java EE 学习 52】【Spring学习第四天】【Spring与JDBC】【JdbcTemplate创建的三种方式】【Spring事务管理】【事务中使用dbutils则回滚失败!!!??】
- 第四天AOP注解的方式以及spring的JDBC模板
- JDBC 访问各种数据库 URL 查询手册
- hibernate之JDBC begin failed
- JDBC连接Sql Server 驱动
- JDBC事务和JTA (XA)事务
- 实习第四天--可恶的字体
- jdbc:oracle:thin:@192.168.3.98:1521:orcl(详解)
- 常用数据库JDBC连接写法
- JDBC操作数据库日期
- 如何在JDBC中使用.properties文件配置驱动
- CodeNotes for J2EE: EJB, JDBC, JSP, and Servlets
- 暑期大作战 第五天(第四天待补)
- JDBC的使用
- 各厂商实现JDBC的驱动和连接字符串
- 完整java开发中JDBC连接数据库代码和步骤[转]
- jdbc资料收集
- JDBC进阶(SXT)
- JAVA使用JDBC编程的初步认识
- Beta Daily Scrum 第四天