簡體   English   中英

工作線程如何從另一個工作線程“竊取”?

[英]How does the worker thread “steal” from another worker thread?

我試圖了解fork-join的偷竊部分。 叉連接池具有帶有自己的雙端隊列的工作線程。 如果工作線程自己的雙端隊列為空,則該工作線程會從另一個工作線程竊取。

  1. 線程如何訪問其他線程的狀態?
  2. 當所有者線程和竊取者線程嘗試訪問出隊中的同一項目時,是否不會產生同步問題?

雙端隊列是一個java.util.concurrent.ConcurrentLinkedDeque。 擁有線程將添加到雙端隊列的底部。 竊取線程輪詢雙端隊列的頂部:

poll()檢索並刪除此雙端隊列表示的隊列的頭部(換句話說,此雙端隊列的第一個元素),如果此雙端隊列為空,則返回null。

因此,沒有沖突。

暫無
暫無

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

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