conditon 实现等待/通知

synchronized 与wait() 和notify() notifyAll() 方法相结合能够实现等待 通知
ReetrantLock也能够实现一样的功能 须要借助condition对象,一个lock对象里面能够建立多个condition(对象监视器),能够选择性的进行线程通知,
notify() 和notifyall() 方法被通知是由jvm随机选择的,condition的使用须要在lock里面。数据结构

  

 

 

 

reetranreadwritelock 可重入读写锁
多个读之间不互斥,读锁与写锁互斥, 写锁与写锁互斥

为什么使用读写锁?
若是有不少线程从一个数据结构或者一个公共变量读取数据,而不多的线程修改数据,那么就用读写锁。
分别获得读锁和写锁:
ReentrantReadWriteLock rrwl=new ReentrantReadWriteLock();
ReadLock readL = rrwl.readLock();
WriteLock writeL = rrwl.writeLock();多线程

synchronized在发生异常时,可以自动释放锁,因此不会发生死锁状况;而Lock必须在finally中主动unlock锁,不然就会出现死锁。jvm

参考:https://blog.csdn.net/u012100371/article/details/75270644spa

相关文章
相关标签/搜索