首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

线程同步(2)-Lock(转载)

2012-06-28 
线程同步(二)-Lock(转载)之前谈到,java提供了synchronized进行线程同步处理,在JDK1.5后,便出现了Lock,两者

线程同步(二)-Lock(转载)

之前谈到,java提供了synchronized进行线程同步处理,在JDK1.5后,便出现了Lock,两者的区别是:

?

Class Test{public static User user=null;Lock lock=new ReentrantLock(); Public void add(User u){lock.lock(); user=u; Dao.save(user);lock.unlock();}finally{lock.unlock();}}?

这样无论你new多少个对象都会是线程同步的

相当于

Public static synchronized void add(User u)

{

???? user=u;

???? Dao.save(user)

}

总结:synchronized 修饰方法时 表示同一个对象在不同的线程中 表现为同步队列

如果实例化不同的对象 那么synchronized就不会出现同步效果了。而Lock有比Synchronized更精确的线程语义和更好的性能

Synchronized会自动释放锁,但是Lock一定要求程序员手工释放,并且必须在finally从句中释放。

?


热点排行