我有一個使用Spring TaskExecutor的Web應用程序。任務執行程序在Web應用程序第一次加載時啓動,並且該線程運行Web應用程序的整個生命週期。自從我將此線程添加到應用程序後,Oracle Application Server將不再正常關閉。我的猜測是,OAS沒有關閉,因爲我沒有正常關閉代碼中任何地方的任務執行程序線程。在哪裏最好的地方是關閉網絡應用程序中的任務執行器?我在Spring 2.5.6上使用Java 5。當Web服務器關閉時,關閉Web應用程序中的TaskExecutor
這裏是我使用的任務執行:
<bean id="taskExecutor" class="org.springframework.core.task.SimpleAsyncTaskExecutor"/>
謝謝。 Spring有ApplicationListener接口。任何想法如何我可以取消LinkedBlockingQueue.take()塊?我試過myQueue.notifyAll()。 – 2010-02-12 14:53:58
我的標準答案是「永遠不要在任何地方使用阻止等待」。或者注入一個稱爲「毒丸」的特殊對象或中斷該線程,如http://stackoverflow.com/questions/812342/how-to-interrupt-a-blockingqueue-which-is-blocking-on-take – 2010-02-12 17:07:01