我有一个功能可以完成一些工作,如果失败或者有异常则返回true。 现在我在这个函数中创建一个线程,负责做同样的工作。现在,如果在线程执行此任务时抛出一些异常,我怎样才能使函数返回true?
boolean read(){
service.execute(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
//does the required work.
});
}
答案 0 :(得分:2)
您可以通过以Callable
而不是Runnable
的形式提供由新线程执行的逻辑来实现此目的。与Runnable
不同,Callable
允许您将某些结果返回到以Future
形式调用它的代码。
boolean read() {
Future<Boolean> future = service.submit(() -> {
// Do your calculations and return whatever is required
return true;
});
// future.get() blocks current thread execution until Callable returns the result
return future.get();
}
我还建议您阅读ThreadPoolExecutor + Callable + Future Example,Callable
和Future
类的ExecutorService
文章和JavaDoc。