tt0*_*686 6 java methods multithreading jakarta-mail
我正在使用JavaMail API,并且Folder类中有一个名为"search"的方法,有时执行时间太长.我想要的是在最长的时间段内执行此方法(例如最多15秒),这样我确信此方法不会超过15秒.
伪代码
messages = maximumMethod(Folder.search(),15);
Run Code Online (Sandbox Code Playgroud)
我是否必须创建一个线程来执行此方法,并在主线程中使用wait方法?
执行此操作的最佳方法是创建一个单线程执行程序,您可以使用它来提交callables.返回值是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
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2307 次 |
| 最近记录: |