图解ReentrantLock的条件变量Condition机制

网站建设3年前发布
27 0 0

想必大家都使用过wait()和notify()这两个方法吧,这两个方法主要用于多线程间的协同处理,即控制线程之间的等待、通知、切换及唤醒。而RenentrantLock也支持这样条件变量的能力,而且相对于synchronized 更加强大,能够支持多个条件变量。,ReentrantLock类API,Condition类API,运行结果:,20230307014818a99b69915ca659e3696578eb34b88ef9e3f861777,20230307014349642129f24b20ff80ec5231728aef2142cb3558529,2023030701481959f5f56224df7778463438da7ef93fd00bf24e274,2023030701435066d301e604160af26494451439d6a0bb870d3f324,2023030701482042c25bd332a8540034126613ca511b9d526539871,源码如下:,下面是await()方法的整体流程,其中LockSupport.park(this)进行阻塞当前线程,后续唤醒,也会在这个程序点恢复执行。,20230307014351d87b93780e6530e8e83060c462de67dd542c81582,2023030701435224951f9755405654dc5464f17b354f23545438683,源码如下:,本文讲解了ReentrantLock中条件变量的使用和原理实现,希望对大家有帮助。

© 版权声明

相关文章