2012-03-13 20 views
0

我稱之爲執行後臺操作的Java文件。由於在後臺執行的線程(在另一個java文件中),我無法將結果返回給jsp頁面。已知return和system.exit(0)不能同時使用。無論如何,要停止可見java文件中的線程並返回結果。停止在後臺執行一個線程,然後返回結果

回答

1

你可以受益於更仔細地制定你的問題。沒有「線程在另一個Java文件中執行」這樣的事情,所以不清楚你的意思到底是什麼。

有沒有簡單的Java /安全的方式終止任意線程。通常最簡單的辦法是使用ExecutorService,提交你的工作,並堅持在返回Future對象,你可以使用後獲得的結果或取消作業執行。如果您希望這樣做,您也可以在不等待作業完成的情況下關閉ExecutorService。在這種情況下,顯然你的工作應該寫在取消注意的位置,所以沒有不良副作用。

0

如果將線程封裝在try {...} catch(InterruptedException ex){...}塊中,則可以使用Thread.interrupt()方法(http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Thread.html#interrupt())。這會將線程發送到中斷處理程序,您可以在返回結果之前清理所需的任何內容。

我認爲你需要在運行循環的某個地方檢查thread.isInterrupted(),如果是這樣,就跳出到中斷處理程序的循環,因爲有時從主程序調用.interrupt()不會導致線程跳轉到中斷處理程序。關於此的所有細節都在我之前鏈接的頁面上。

0

您的意圖不是很清楚,但您可能想看看Java FutureScheduledFuture接口以及使用它們的多線程類。

相關問題