Smi*_*esh 22 java timeout synchronous
我有一个同步执行路径,需要在给定的时间范围内完成或超时.假设我有一个带有main()方法的类,其中我调用方法A(),后者又调用B(),然后调用相同或不同类的C().....所有同步而不使用一个外部资源,如数据库,Web服务或文件系统(其中每个都可以使用TxManager或相应的超时api独立超时).所以它更像是CPU或内存密集型计算.如何在Java中编写它的超时代码?
我已经看过TimerTask,但更多的是使流异步和调度任务.还有其他建议吗?
Tal*_*ala 40
您应该使用ExecutorService来执行此操作
ExecutorService executor = Executors.newSingleThreadExecutor();
Future<String> future = executor.submit(new Callable() {
public String call() throws Exception {
//do operations you want
return "OK";
}
});
try {
System.out.println(future.get(2, TimeUnit.SECONDS)); //timeout is in 2 seconds
} catch (TimeoutException e) {
System.err.println("Timeout");
}
executor.shutdownNow();
Run Code Online (Sandbox Code Playgroud)