我有使用ExecutorService調度任務的方法。我需要在一段時間後終止任務。我怎樣才能指定這樣的時間?如何使用Java中的ExecutorService爲任務設置超時時間
編輯: 我等待的時間X量的資源可用,而不是無限期的等待之後應該終止一個進程。
我有使用ExecutorService調度任務的方法。我需要在一段時間後終止任務。我怎樣才能指定這樣的時間?如何使用Java中的ExecutorService爲任務設置超時時間
編輯: 我等待的時間X量的資源可用,而不是無限期的等待之後應該終止一個進程。
這停止執行行爲應該由任務本身來執行。您可以嘗試強制停止該線程,但這會導致死鎖問題。
您應該讓這些任務實現超時邏輯,以便他們可以以合適的方式關閉自己。
這裏是一個資源等待任務的一個基本的例子:
@Override
public Object call() throws Exception { // In a Callable<Object>
long startTime = System.currentTimeMillis();
while(System.currentTimeMillis() - startTime < 5000) { // wait for max 5 seconds.
if(resource.isAvailable()) {
// Do something with the resource
return someValue;
}
}
throw new TimeoutException("Resource could not be acquired");
}
你有答案在這裏 - http://stackoverflow.com/questions/2758612/executorservice-that-interrupts - 超時任務 –