我有一個java客戶端,它正在新線程中管理其服務器調用,以防止GUI凍結。在調用EJB方法時中斷客戶端線程的正確方法是什麼?
即使在許多地方阻止了這種情況,也有可能在同一模型上再次調用該方法,例如使用不同的參數。在這種情況下,我顯然希望具有最新參數的最新呼叫成爲「成功」並顯示其結果的呼叫。
我有一個系統跟蹤之前啓動的線程,並在啓動新線程之前中斷它(Thread.interrupt()
)。然後,其他方法檢查它們是否在未中斷的線程中運行(使用if (Thread.currentThread().isInterrupted()
),然後將新結果發佈到GUI元素。
該結構正在使用以前的連接器到服務器,因爲我是唯一一個檢查進程中的中斷標誌。我的問題是,我現在在客戶端使用EJB方法調用,並且他們對中斷的線程反應不佳。在EJB調用期間中斷線程將觸發RuntimeException
,其中包括InterruptedException
。這似乎不是一個正常的事情發生。
顯然,我可以在每個服務器調用中捕獲RuntimeExceptions並檢查它們的中斷原因,但它看起來不是很「乾淨」。
我的問題是:在這種情況下我能做些什麼?中斷運行EJB方法調用的線程的正確方法是什麼?
不要緊,要的EJB新過時調用完成?或者你真的需要真正停止EJB端的處理嗎? – Rich 2011-03-08 10:57:47
@Rich - 這其實並不重要。停止它會更好,但是在服務器端需要一個更大的結構,最有可能的是消息傳遞。對於這個問題,我只關注客戶端。 – Gnoupi 2011-03-08 11:03:01