我知道這是不適當的建議,但我仍然試圖尋找一種方法來中斷掛起的線程,從另一個線程是保持時間。如何從監視器中斷另一個線程線程
我所做的是: 我在即將發生可疑的網絡操作之前啓動監視器線程。該線程應該監視自啓動以來的時間,如果時間超過某個閾值,它會殺死最初啓動它的線程。爲了通知這個新線程,要殺死哪個線程,新線程的對象被傳遞給要被監視的線程對象。
簡單地說,這是發生了什麼:
A創建B,B創建C,B告訴C約本身,C保持時間,如果時間過期Ç殺死B(我傳遞的細節到C後B的運行方法使用「currentThread()」,並且我已經確認正確的對象確實正在通過)
現在,問題在於,由於某種原因,此操作不起作用,因此調用B.interrupt )正在殺死C本身。
[注意:大寫字母表示螺紋名稱]
什麼是C到死的原因(通常是需要很長時間的操作之前)?任何堆棧跟蹤?你知道它肯定會死嗎?你能發佈你的監控線程的代碼嗎? – 2010-08-05 07:02:35
http://pastebin.com/JVfpkqEg這裏是監視器代碼的鏈接,「Hourglass」只是我製作的一個小型定時器類,在構造函數中你可以在幾秒鐘內超時,然後你就可以開始,停止或檢查任務是否完成。 – angryInsomniac 2010-08-05 09:02:42
評論繼續:我沒有看到C死亡的任何理由,沒有錯誤報告,所以我不能給你任何堆棧跟蹤。 我確信它死了,因爲我在eclipse中實時觀察線程執行,只要執行必要的語句,線程C就會死掉。 – angryInsomniac 2010-08-05 09:14:33