1. 程式人生 > >5、JUC--實現 Callable 接口

5、JUC--實現 Callable 接口

println turn 閉鎖 cep 代碼 png [] exce 設計

Callable接口

? Java 5.0 在 java.util.concurrent 提供了一個新的創建執行
  線程的方式:Callable 接口


? Callable 接口類似於 Runnable,兩者都是為那些其實例可
  能被另一個線程執行的類設計的。但是 Runnable 不會返
  回結果,並且無法拋出經過檢查的異常。


? Callable 需要依賴FutureTask ,FutureTask 也可以用作閉鎖

創建執行線程的方法有四種:

1、繼承Thread類或者創建線程類

2、通過實現Runable接口創建線程類

3、通過Callable接口

4、通過線程池創建線程

相對於Runable接口的不同:

可以使用泛型,方法可以有返回值沒並且可以拋出異常

實例:

public class TestCallabel {
    
public static void main(String[] args) {
    ThreadDemoCallable tc = new ThreadDemoCallable();
    
    //此時的使用方式有些不同
    //1、需要FutureTask實現類的支持,用於接收運算結果 
    FutureTask<Integer> result = new FutureTask<>(tc);
    
    
new Thread(result).start(); //2、接收運算的結果 //註意:只有上述的線程之後下方的代碼才會執行----閉鎖 try { Integer sum = result.get(); System.out.println(sum); } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } } }
//可以使用泛型 class ThreadDemoCallable implements Callable<Integer>{ @Override public Integer call() throws Exception { //計算整合 int sum = 0; for(int i = 0;i <10;i++){ sum +=i; } return sum; } }

技術分享圖片

效率高

可以實現和閉鎖一樣的實現功能

5、JUC--實現 Callable 接口