我用一個函數調用,使在樹上進行遞歸搜索。它在類變量中設置最佳答案,而函數本身不返回任何內容。
所以我想限制該功能的允許時間。如果時間用完了,它會停止並且線程被銷燬。我應該怎麼做,如果我想呼叫限制兩秒鐘:
runFunction(search(),2000);
我用一個函數調用,使在樹上進行遞歸搜索。它在類變量中設置最佳答案,而函數本身不返回任何內容。
所以我想限制該功能的允許時間。如果時間用完了,它會停止並且線程被銷燬。我應該怎麼做,如果我想呼叫限制兩秒鐘:
runFunction(search(),2000);
假設你正在使用Java 5或更高,我會使用的ExecutorService接口和提交方法:
ExecutorService executor = Executors.newSingleThreadExecutor();
Future<?> future = executor.submit(new Runnable() {
@Override
public void run() {
search();
}
});
try {
future.get(2000, TimeUnit.SECONDS);
} catch (TimeoutException e) {
// handle time expired
}
使用此方法還可以通過提交Callable而不是Runnable來調整線程以返回值。
這隻會在'search'是可中斷的時候才起作用。 – assylias
完美!我需要銷燬線程還是自動完成? – user1506145
看看這個問題:http://stackoverflow.com/questions/2275443/how-to-timeout-a-thread – japreiss