簡體   English   中英

Java線程:有關線程等待狀態的查詢

[英]Java Thread : Query regarding Thread waiting state

假設我有一個同步塊,並且說有1000個線程同時訪問該塊,而一個線程可以訪問同步塊。 其他999個線程將進入等待狀態,直到收到通知。 我想知道這999個線程恰好處於等待狀態。 在等待狀態期間以及通知它們后,將使用哪種數據結構來保存這999個線程,jvm如何選擇一個線程來訪問同步塊。 也是涵蓋線程同步和線程監視器的最佳文章。 我用谷歌搜索出來,但仍然對同步實際上如何在內部工作感到困惑。

謝謝

在Java線程中是用戶級線程 與內核級線程不同,這些線程由客戶端庫管理。 該庫負責處理這些線程的狀態。 例如,即使您的1000個線程中有10個線程正在處理10個不同的資源,並且其中1個線程進行了系統調用,則(該進程的)所有線程都相對於內核被阻止。 但是,對於用戶庫,只有一個進行系統調用的線程被阻止,而其他線程處於運行狀態。

同樣,也不保證哪個線程將獲得下一個鎖。 如果您想要公平,可以使用ReentrantLock ,它提供了比同步塊更多的功能。 它還具有一個可選的公平參數,如果設置為true,它將為等待時間最長的線程提供鎖定。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM