av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

java - 為什么第一個(gè)線程已經(jīng)釋放了鎖,第二個(gè)線程卻不行?

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

問(wèn)題描述

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釋放了鎖

然后就卡在這里了。沒(méi)有任何結(jié)果。可能是發(fā)生了死鎖。

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

請(qǐng)問(wèn)這是為什么?

問(wèn)題解答

回答1:

你用的是可重入鎖,在Thread0在調(diào)用tryLock的時(shí)候,如果當(dāng)前鎖可獲得,會(huì)立刻獲取鎖,后面你又調(diào)用了一次lock,由于Thread0已經(jīng)獲取了鎖,所以可重入鎖的state等于2,所以 Thread0 釋放鎖的時(shí)候要unlock兩次鎖才被真正的釋放掉。

標(biāo)簽: java
主站蜘蛛池模板: 在线观看国产黄色 | 免费午夜视频 | 午夜无遮挡| 黄色性视频| 亚洲欧美精品 | 99看片| 激情小说在线视频 | 黄色免费片 | 8090理论片午夜理伦片 | 超碰av在线播放 | 亚洲国产欧美在线 | 黄色日皮视频 | 美国特色黄a大片 | 激情高潮到大叫狂喷水 | 久久久久久久影院 | 国产全肉乱妇杂乱视频 | 日韩精品免费视频 | 黄色片视频免费 | 五月婷婷六月丁香 | 午夜精品视频在线观看 | 日韩中文字幕在线观看 | av免费观看网址 | 午夜av网站 | 性生活视频网站 | 日本高潮视频 | 91精品在线免费观看 | 黄色三级av | 黄色一级片网站 | 色综合久久88色综合天天 | 成人国产精品 | 日韩欧美黄色 | 成人午夜在线观看 | 成人免费看片在线观看 | 免费观看全黄做爰的视频 | 婷婷激情五月 | 国产一区二区在线免费 | 99热免费 | 国产区在线观看 | 久久视频一区二区 | 青草在线视频 | 国产在线观看不卡 |