我正在使用 JavaMail API
,Folder 类中有一个名为“搜索”的方法,有时执行时间过长。我想要的是在最长的时间段内执行此方法(例如最多 15 秒),这样我可以确定此方法不会运行超过 15 秒。
伪代码
messages = maximumMethod(Folder.search(),15);
是否必须创建一个线程来执行此方法并在主线程中使用 wait 方法?
最佳答案
最好的方法是创建一个单线程的 executor你可以用它提交可调用文件。返回值为 Future<?>
你可以从中得到结果。你也可以说等待这么久才能得到结果。这是示例代码:
ExecutorService service = Executors.newSingleThreadExecutor();
Future<Message[]> future = service.submit(new Callable<Message[]>() {
@Override
public Message[] call() throws Exception {
return Folder.search(/*...*/);
}
});
try {
Message[] messages = future.get(15, TimeUnit.SECONDS);
}
catch(TimeoutException e) {
// timeout
}
关于java : execute a method over a maximum period of time,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7177666/