久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

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

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

瀏覽:141日期: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
主站蜘蛛池模板: 一区二区免费在线 | 日b片 | 欧美激情一区二区 | 午夜影院在线观看免费 | 伊人色播 | 欧美二三区 | 四虎影视 | 一级毛片视频播放 | 欧美精品在线观看 | 夜夜av| 91久久综合亚洲鲁鲁五月天 | 999精品网| 永久精品| 在线观看国产小视频 | 亚洲成人基地 | 国产自产才c区 | 国产视频一视频二 | 精品久久久久久 | 亚洲国产成人精品女人久久久 | 成人在线观看免费 | aaaaaa黄色片| 99在线视频精品 | 国产一区二区三区精品久久久 | 国产精品成人在线 | 亚洲在线视频 | 一区二区精品视频 | 亚洲一二视频 | 激情国产 | 久久久网站 | 免费福利视频一区 | 欧美精品1区2区3区 国产女无套免费网站 | 日韩快播电影 | 国产精品一区二区三区免费视频 | 99免费精品 | 超碰在线人 | 亚洲精品久久久久久下一站 | 成人羞羞在线观看网站 | www久| 亚洲毛片在线 | 女朋友的闺蜜3韩国三级 | 亚洲美女一区 |