java上实现同步有哪些方式方法
1、加锁的时候不能设置超时。ReentrantLock有提供tryLo罕铞泱殳ck方法,可以设置超时时间,如果超过了这个时间并且没有获取到锁,就会放弃,而synchronized却没有这种功能。
2、ReentrantLock可以使用多个Condition,而synchronized却只能有1个。不能中断一个试图获得锁的线程。
3、ReentrantLock可以选择公平锁和非公平锁。ReentrantLock可以获得正在等待线程的个数,计数器等。
4、这里需要注意的是thread1调用Condition的await方法之后,thread1线程释放锁。
5、然后马上加入到Condition的等待队列,由于thread1释放了锁,thread2获得锁并执行,thre锾攒揉敫ad2执行signalAll方法之后,Condition中的等待队列thread1被取出并加入到AQS中。
6、接下来thread2执行完毕之后释放锁,由于thread1已经在AQS的等待队列中,所以thread1被唤醒,继续执行。
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
阅读量:38
阅读量:52
阅读量:54
阅读量:86
阅读量:49