如果线程失败,函数必须返回true

时间:2017-09-27 11:01:49

标签: java multithreading exception-handling return-value

我有一个功能可以完成一些工作,如果失败或者有异常则返回true。 现在我在这个函数中创建一个线程,负责做同样的工作。现在,如果在线程执行此任务时抛出一些异常,我怎样才能使函数返回true?

   boolean read(){   
      service.execute(new Runnable() {
            @Override
            public void run() {
                // TODO Auto-generated method stub
                //does the required work.
      });
   }

1 个答案:

答案 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 ExampleCallableFuture类的ExecutorService文章和JavaDoc。