国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

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

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 | 欧美日韩一区二区三在线 | 国产亚洲欧美一区二区 | 国产孕妇孕交大片孕 | 宅女深夜福利视频在线 | 丰满寡妇一级毛片 | 牛人盗摄一区二区三区视频 | 九九精品成人免费国产片 | 亚洲精品456在线播放无广告 | 国产黄三级三·级三级 | 中文字幕精品视频在线 | 欧美三级免费 | 欧美特级一级毛片 | 日本女人www| 免费在线观看黄色毛片 | 久久精品国产精品亚洲人人 | 国产一区二区中文字幕 | 国产成人无精品久久久 | 日韩理论在线 | 久久精品免费在线观看 | 国产a国产片 | 久久久久久久久免费影院 | 亚洲国产欧美精品一区二区三区 | 天天看有黄有色大片 | 欧美一级毛片在线一看 | 男女免费观看在线爽爽爽视频 | 欧美成人性色xxxxx视频大 | 男人天堂国产 | 欧美日韩在线视频不卡一区二区三区 | 美女18网站| 91精品国产综合久久香蕉 | 狠狠色狠狠综合久久 | 欧美成人在线观看 | 久久e| 一区二区三区四区在线播放 | 国产网站免费视频 | 最新最好看免费毛片基地 | 亚洲国产成a人v在线观看 | 国产成人午夜性视频影院 |