欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java多線程Callable接口實(shí)現(xiàn)代碼示例

 更新時(shí)間:2017年10月20日 09:36:21   作者:于亮  
相信大家對(duì)Java編程中如何創(chuàng)建線程已經(jīng)不陌生了,這篇文章就向朋友們介紹實(shí)現(xiàn)callable接口,具體實(shí)例詳見正文。

對(duì)于多線程,大家并不陌生,對(duì)于如何創(chuàng)建線程也是輕車熟路,對(duì)于使用new thread和實(shí)現(xiàn)runable接口的方式,不再多說。這篇博文我們介紹第三種:實(shí)現(xiàn)Callable接口。

Callable接口

接口定義:

@FunctionalInterface
public interface Callable<V> {
  V call() throws Exception;
}

從Callable的定義可以看出:

Callable接口類似于Runnable,兩者都是為那些其實(shí)例可能被另一個(gè)線程執(zhí)行的類設(shè)計(jì)的,方法可以有返回值,并且可以拋出異常。但是Runnable不行。

Callable需要依賴FutureTask,用于接收運(yùn)算結(jié)果。一個(gè)產(chǎn)生結(jié)果,一個(gè)拿到結(jié)果。FutureTask是Future接口的實(shí)現(xiàn)類,也可以用作閉鎖。

簡(jiǎn)單實(shí)例

計(jì)算0到100相加,返回結(jié)果。

public class TestCallable {
  public static void main(String[] args) {
    CallableThreadDemo ctd = new CallableThreadDemo();
    //1.執(zhí)行Callable方式,需要FutureTask實(shí)現(xiàn)類的支持,用于接收運(yùn)算結(jié)果
    FutureTask<Integer> result = new FutureTask<Integer>(ctd);
    new Thread(result).start();
    //2.接收線程運(yùn)算后的結(jié)果
    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;
  }
}

總結(jié)

Callable接口其實(shí)特別簡(jiǎn)單,在多線程環(huán)境中,返回結(jié)果。

希望本文所述對(duì)大家了解多線程及callable接口有所幫助。感興趣的朋友可以繼續(xù)參閱本站:淺談Java面向接口編程、Java編程接口回調(diào)一般用法代碼解析等。感謝大家對(duì)本站的支持!

相關(guān)文章

最新評(píng)論