读书人

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

发布时间: 2012-06-28 15:20:04 作者: rapoo

线程同步(二)-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从句中释放。

?


读书人网 >Web前端

热点推荐