Java之實現多執行緒的方式三:實現Callable介面(結合執行緒池使用)

Devilyang123發表於2018-05-23

1.Callable介面介紹

    JDK API文件描述:  

   Callable 介面類似於 Runnable,兩者都是為那些其例項可能被另一個執行緒執行的類設計的。但是 Runnable 不會返回結果,並且無法丟擲經過檢查的異常。

2.實現Callable介面,重寫call()方法

package com.xiao.callable;

import java.util.concurrent.Callable;
/**
 * @Author 笑笑
 * @Date 18:37 2018/05/23
 */
public class MyThreadClass implements Callable<String>{

    //V call()  由於該方法的返回值是個泛型V,所以具體的返回型別可以自己定義,下面返回值設定為了String,
    @Override
    public String call() throws Exception {

        return "笑笑";
    }
}

3.使用工廠類Executors的靜態方法newFixedThreadPool()方法建立執行緒池,返回ExecutorService介面的實現類物件,然後呼叫submit()方法提交執行緒任務

package com.xiao.callable;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
/**
 * @Author 笑笑
 * @Date 19:00 2018/05/23
 */
public class CallableDemo {

    public static void main(String[] args) throws Exception{
        //參數列示此執行緒池裡有多少可用的執行緒數量
        ExecutorService es = Executors.newFixedThreadPool(3);
        //提交執行緒任務,返回一個Future介面,引數為Callable實現類物件
        Future<String> future = es.submit(new MyThreadClass());
        //獲取返回值
        String s = future.get();
        System.out.println(s);

    }

}


相關文章