在ForkJoinPool
ForkJoinTask
中,當前工作線程是否參與工作竊取?當前員工是否參與偷工作?
我已閱讀的意義,一個叉連接池可以從工作阻塞或等待的線程竊取。目前的工人似乎是一個明顯的人選。一旦工人在另一個任務上調用.join()
,那麼該任務基本上被阻止。
另一方面,我看到許多文章暗示不同的結論。例如,目前的工作線程應該在等待分支任務之前工作的普遍共識。
有跡象表明,討論如何利用ForkJoinTask.getSurplusQueuedTaskCount
由具有當前工人平衡在隊列中的工作方法的幾篇文章做一些工作。如果當前的工作人員也在偷竊,那麼這似乎不是必要的。
當然,我想最大化線程操作並保持所有工作最大限度地運行。瞭解當前線程是否也在偷竊工作(例如,當調用.join
時)將有助於澄清。
你需要一個特定類型的問題,它是最大看到http://stackoverflow.com/questions/7926864/ fork-join-framework-better-a-thread-pool –
我寫了其中一篇文章,我可以保證你的join()不會導致竊取工作http:// coopsoft .com/ar/Calamity2Article.html#join工作竊取僅在deque爲空時有效。就個人而言,我不會用getSurplus來微觀管理框架....等等。 – edharned