0
我想通過java main執行搜索方法,並且想實現 超時搜索方法返回,否則它會拋出超時消息。 如何使用線程或計時器類實現這個超時功能?超時搜索方法返回,否則它會拋出超時消息
我想通過java main執行搜索方法,並且想實現 超時搜索方法返回,否則它會拋出超時消息。 如何使用線程或計時器類實現這個超時功能?超時搜索方法返回,否則它會拋出超時消息
一種方法是將提交您的搜索任務的執行,並call get(timeout);
on the returned future - 在本質:
Callable<SearchResult> task = ...;
ExecutorService executor = Executors.newFixedThreadPool(1);
Future<SearchResult> f = executor.submit(task);
SearchResult result = null;
try {
result = f.get(2, TimeUnit.SECONDS); //2 seconds timeout
return result;
} catch (TimeOutException e) {
//handle the timeout, for example:
System.out.println("The task took too long");
} finally {
executor.shutdownNow(); //interrupts the task if it is still running
}
反應
此示例可能有所幫助:http://www.java2s.com/Code/Java/Threads/Executesataskwithaspecifiedtimeout.htm。還有很多其他例子可以在Google上很容易找到。 –
您可以隨時嘗試[Object.wait(long)](http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#wait(long)) – MadProgrammer
將來請編輯您的帖子以向我們展示代碼示例,並解釋您嘗試過的以及它如何工作。 – Gray