Java编程思想AttemptLocking运行结果和预期不一样(使用显示的Lock对象)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wangbingfengf98/article/details/75253751

平台: Windows7 32bit

JDK版本: 1.5.0_22,1.8.0_121

实测结果为:

tryLock(): true
tryLock(2, TimeUnit.SECONDS): true
tryLock(): true
tryLock(2, TimeUnit.SECONDS): true
acquired

和书中给的例子不一样,从结果上看是main线程中Thread.yield()方法,并没有给后台线程执行机会,没有获得竞争锁

将Thread.yield()方法替换为TimeUnit.MILLISECONDS.sleep(1);后即可实现预期效果

tryLock(): true
tryLock(2, TimeUnit.SECONDS): true
acquired
tryLock(): false
tryLock(2, TimeUnit.SECONDS): false

猜你喜欢

转载自blog.csdn.net/wangbingfengf98/article/details/75253751
今日推荐