Java執行緒面試題(01) Java中如何檢查一個執行緒是否擁特定物件的鎖
本文為本博主翻譯,未經允許,嚴禁轉載
簡介
考慮一個場景,在執行時你必須確認一個Java執行緒是否持有特定物件的鎖,例如,確認NewsReader執行緒是否持有NewsPaper物件的鎖?如果這個問題出現在任何核心的Java面試中,那麼我會自動假設可能有至少兩個答案,一個是難以獲得的原始答案,程式設計師想根據基本原理找出答案,而另一個可能是一些很少使用的Java API呼叫,順便說一下,這實際上是在接受我最大的全球投資銀行之一面試時是被問到的問題。投資銀行領域,特別是現金股票, 需要強大的核心Java和多執行緒技能來構建高效能,低延遲的Java應用程式,以處理每天數百萬個訂單。
2種方法來查詢執行緒是否持有Java物件的鎖
在這裡,我正在給出我的答案以及我在面試後發現的東西。是的,非常不幸,面試官在電話面試中詢問我時,我不知道答案。我設法提供了基於同步塊和wait()和notify()方法的屬性的邏輯,如第一個答案所示,但他當時並不滿意。
許多面試官期望得到他們認為最好的答案,他們會推動你繼續尋找直到你放棄,或者你給他們他們想要的答案。這在面試中非常常見。
1)我想過,當wait()和notify()方法從非同步上下文中呼叫時會丟擲IllegalMonitorStateException,所以我說我會呼叫newspaper.wait(),如果這個呼叫丟擲異常,這意味著Java中的執行緒並未持有鎖,否則執行緒持有鎖。
2)後來我發現執行緒有一個名為holdsLock(Object obj)的靜態方法,它根據執行緒是否對傳遞的物件持有鎖來返回true或false。
您還可以學習Cay S. Horstmann的Core Java Volume 1 - Fundamentals或Java Threads 2nd Editon,以瞭解更多關於Java中的Thread類的內容。第一本書是以最容易的方式學習Java祕密的最佳書籍之一。
這就是如何找到一個執行緒是否擁有Java中某個特定物件的鎖。如果您需要在Java應用程式中知道這一點,則應該使用java.lang.Thread類的holdsLock()方法。
意見,建議,創新更好的答案總是受歡迎的。
原文連結
How to check if a thread holds lock on a particular object in Java
相關文章
- Java執行緒面試題(02) Java執行緒中如何避免死鎖Java執行緒面試題
- 【Java面試】如何中斷一個正在執行的執行緒?Java面試執行緒
- Java多執行緒中執行緒安全與鎖問題Java執行緒
- java 執行緒鎖物件鎖的理解Java執行緒物件
- Java執行緒:執行緒的同步與鎖Java執行緒
- Java多執行緒(2)執行緒鎖Java執行緒
- 【Java面試題】Java面試之多執行緒!Java面試題執行緒
- 15個Java多執行緒面試題Java執行緒面試題
- 50個Java多執行緒面試題Java執行緒面試題
- java多執行緒面試題Java執行緒面試題
- Java執行緒:執行緒中斷Java執行緒
- 【JAVA】【面試】【基礎篇】- 執行緒、鎖Java面試執行緒
- java面試一日一題:java執行緒池Java面試執行緒
- Java執行緒面試題 Top 50Java執行緒面試題
- Java多執行緒面試高配問題---多執行緒(3)🧵Java執行緒面試
- 聊聊面試中的 Java 執行緒池面試Java執行緒
- Java執行緒面試題(04) Java中程式與執行緒的真實區別Java執行緒面試題
- Java多執行緒——執行緒Java執行緒
- Java NIO 執行緒 的一個問題Java執行緒
- Java中的執行緒Java執行緒
- Java執行緒中斷與終止執行緒執行Java執行緒
- Java 執行緒安全 與 鎖Java執行緒
- java多執行緒–同步鎖Java執行緒
- Java多執行緒-無鎖Java執行緒
- Java執行緒之鎖研究Java執行緒
- Java執行緒池一:執行緒基礎Java執行緒
- JAVA多執行緒詳解(3)執行緒同步和鎖Java執行緒
- JAVA執行緒面試題書目錄Java執行緒面試題
- java多執行緒執行問題Java執行緒
- Java中一個物件在多執行緒中是共享的Java物件執行緒
- Java多執行緒-執行緒中止Java執行緒
- Java多執行緒——執行緒池Java執行緒
- 面試官:Java 執行緒如何啟動的?面試Java執行緒
- Java常用面試題之Java多執行緒(十三)Java面試題執行緒
- Java併發--Java執行緒面試題 Top 50Java執行緒面試題
- Java中如何保證執行緒順序執行Java執行緒
- 中斷JAVA執行緒Java執行緒
- JAVA中執行緒的建立Java執行緒