Callable接口用法


注意點:FutureTask是Runnable的實現類,它的構造器可以傳Callable接口的實現類。

 

 

 例子如下:

class MyThread implements Callable<Integer> {

@Override
public Integer call() throws Exception {
System.out.println(Thread.currentThread().getName()+" come in Callable");
return 1024;
}
}

public class CallableDemo {
public static void main(String[] args) throws ExecutionException, InterruptedException {
//多個線程只搶一次futureTask,計算結果只有一次,如果要起多個futureTask,就要再創建新的實例,見如下:
FutureTask<Integer> futureTask = new FutureTask<Integer>(new MyThread());
FutureTask<Integer> futureTask1 = new FutureTask<Integer>(new MyThread());
new Thread(futureTask,"AA").start();
new Thread(futureTask1,"BB").start();
System.out.println("main---------------------");
int number = 100;

// while (!futureTask.isDone()) {
// 此方法跟futureTask.get()效果一樣,都是等待執行完結果
// }

//要求獲得Callable線程的計算結果,如果沒有計算完成就要去強求會導致阻塞,所以最好放最后面執行。
int result = futureTask.get();
System.out.println("******運算結果為:" +(number+result));

}
}

運行結果見下圖:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM