如果线程出现故障,函数必须返回true
问题描述:
我有一个函数可以完成一些工作,如果失败或者有异常,它将返回true。 现在我在这个函数中创建一个线程,负责完成相同的工作。现在,如果在线程执行此任务时抛出一些异常,我该如何让函数返回true?如果线程出现故障,函数必须返回true
boolean read(){
service.execute(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
//does the required work.
});
}
答
可以通过提供逻辑实现这一个新的线程在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文章和Javadoc Callable
,Future
和ExecutorService
类。
请标记编程语言 –