色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

java - 為什么第一個線程已經釋放了鎖,第二個線程卻不行?

瀏覽:142日期:2024-02-11 18:16:07

問題描述

public class ReentrantLockDemo { private Lock lock = new ReentrantLock(); public void doSomeThing() {System.out.println(Thread.currentThread().getName()+'是否獲得了鎖:'+lock.tryLock());lock.lock();try { System.out.println(Thread.currentThread().getName()); Thread.sleep(3000);} catch (Exception e) {} finally { System.out.println(Thread.currentThread().getName()+'釋放了鎖'); lock.unlock();} } static class MyRunable implements Runnable {private ReentrantLockDemo demo;public MyRunable(ReentrantLockDemo demo) { this.demo = demo;}@Overridepublic void run() { demo.doSomeThing();} } public static void main(String[] args) throws InterruptedException { ReentrantLockDemo demo = new ReentrantLockDemo();new Thread(new MyRunable(demo)).start();Thread.sleep(1000);new Thread(new MyRunable(demo)).start(); }}

輸出:Thread-0是否獲得了鎖:trueThread-0Thread-1是否獲得了鎖:falseThread-0釋放了鎖

然后就卡在這里了。沒有任何結果。可能是發生了死鎖。

如果我去掉這句話,一切就是正常的:System.out.println(Thread.currentThread().getName()+'是否獲得了鎖:'+lock.tryLock());

請問這是為什么?

問題解答

回答1:

你用的是可重入鎖,在Thread0在調用tryLock的時候,如果當前鎖可獲得,會立刻獲取鎖,后面你又調用了一次lock,由于Thread0已經獲取了鎖,所以可重入鎖的state等于2,所以 Thread0 釋放鎖的時候要unlock兩次鎖才被真正的釋放掉。

標簽: java
主站蜘蛛池模板: 久久精品国产99国产精品 | 九九视频在线观看视频6 | 亚洲三级大片 | 美女张腿男人桶免费视频 | a级毛片免费观看网站 | 国产精品亚洲一区二区三区久久 | 欧美成在线| 成人中文字幕一区二区三区 | 欧美一及片 | 国产精品成人免费 | 亚洲欧洲日产国码二区首页 | 久久成人免费视频 | 边接电话边做国语高清对白 | 国产三级香港在线观看 | 中文字幕中文字幕在线 | 国产精品九九久久一区hh | 日本精品久久 | 色一欲一性一乱一区二区三区 | 国产精品大全国产精品 | 亚洲视频天堂 | 亚洲国产网址 | 日本加勒比视频在线观看 | 亚洲国产成人久久午夜 | 99精品视频一区在线观看miya | aaaaaa毛片免费看 | 日本亚洲高清 | 一级片美女 | 久久欧美精品欧美久久欧美 | 国产九九在线观看播放 | 日韩亚洲一区中文字幕 | 看一级特黄a大片国产 | 亚洲在线观看免费视频 | 久久久久久免费播放一级毛片 | 三级午夜三级三点在看 | 亚洲va中文字幕欧美不卡 | 美女动作一级毛片 | 女bbbbxxxx毛片视频0 | 亚洲男人天堂2018 | 免费v片在线观看 | 欧美性色黄大片一级毛片视频 | 最新三级网址 |