對于多線程,大家并不陌生,對于如何創建線程也是輕車熟路,對于使用new thread和實現runable接口的方式,不再多說。這篇博文我們介紹第三種:實現Callable接口。
Callable接口
接口定義:
1
2
3
4
|
@FunctionalInterface public interface Callable<V> { V call() throws Exception; } |
從Callable的定義可以看出:
Callable接口類似于Runnable,兩者都是為那些其實例可能被另一個線程執行的類設計的,方法可以有返回值,并且可以拋出異常。但是Runnable不行。
Callable需要依賴FutureTask,用于接收運算結果。一個產生結果,一個拿到結果。FutureTask是Future接口的實現類,也可以用作閉鎖。
簡單實例
計算0到100相加,返回結果。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
public class TestCallable { public static void main(String[] args) { CallableThreadDemo ctd = new CallableThreadDemo(); //1.執行Callable方式,需要FutureTask實現類的支持,用于接收運算結果 FutureTask<Integer> result = new FutureTask<Integer>(ctd); new Thread(result).start(); //2.接收線程運算后的結果 try { Integer sum = result.get(); //FutureTask 可用于閉鎖 System.out.println(sum); } catch (InterruptedException | ExecutionException e) { e.printStackTrace(); } } } class CallableThreadDemo implements Callable<Integer>{ @Override public Integer call() throws Exception { int sum = 0 ; for ( int i = 0 ; i <= 100 ; i++) { sum += i; } return sum; } } |
總結
Callable接口其實特別簡單,在多線程環境中,返回結果。
希望本文所述對大家了解多線程及callable接口有所幫助。感謝大家對本站的支持!
原文鏈接:http://blog.csdn.net/jiuqiyuliang/article/details/62426518