想必大家都使用过wait()和notify()这两个方法吧,这两个方法主要用于多线程间的协同处理,即控制线程之间的等待、通知、切换及唤醒。而RenentrantLock也支持这样条件变量的能力,而且相对于synchronized 更加强大,能够支持多个条件变量。,ReentrantLock类API,Condition类API,运行结果:,
,
,
,
,
,源码如下:,下面是await()方法的整体流程,其中LockSupport.park(this)进行阻塞当前线程,后续唤醒,也会在这个程序点恢复执行。,
,
,源码如下:,本文讲解了ReentrantLock中条件变量的使用和原理实现,希望对大家有帮助。
© 版权声明
文章版权归作者所有,未经允许请勿转载。