2017-09-27 88 views
2

我有一個函數可以完成一些工作,如果失敗或者有異常,它將返回true。 現在我在這個函數中創建一個線程,負責完成相同的工作。現在,如果在線程執行此任務時拋出一些異常,我該如何讓函數返回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文章和Javadoc CallableFutureExecutorService類。