簡體   English   中英

從ExecutorService獲取當前正在運行的線程對象

[英]Get currently running thread objects from ExecutorService

我正在使用ExecutorService (全局聲明)在同一時間運行多線程 ExecutorService將花費一個小時來完成任務。 所以我需要獲取當前正在運行的線程詳細信息,例如活動線程排隊的線程已完成的線程

當我殺死ExecutorServiceExecutorService殺死了,但是線程在后台運行。 因此,在終止ExecutorService之前,我需要獲取ExecutorService形式的線程對象,並使用循環迭代器手動ExecutorService線程。

例如:

ExecutorService有5個線程。

每個線程都由invokeall()執行。 每個線程將在一小時后結束。

但是,我需要在15分鍾內通過向服務器發送新請求或調用某種方法來停止操作。

這里shutdown或shutdowNow停止執行程序,但不停止這5個線程。 那就是問題所在。 所以我需要手動殺死那些線程。 如何殺死執行程序服務中手動附加的線程?

我找到了解決方案,所有線程都附加在Callable中,並使用ExecutorService調用Callable線程。 ExecutorService僅包含活動,隊列和已完成詳細信息的值。 執行后,結果將使用Future類獲取值。

現在,如果我想在完成之前停止執行。 我需要調用可調用對象並轉換為線程對象,如果線程不為null,則手動停止。 因此,Callable對象也更改為全局變量。 最終執行刪除那些對象。

暫無
暫無

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

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