天天看點

Callable與Future Callable與Future

Callable與Future

  Callable和Future,一個産生結果,一個拿到結果。     

  Callable接口類似于Runnable,但是Runnable不會傳回結果,并且無法抛出傳回結果的異常,而Callable功能更強大一些,被線程執行後,可以傳回值,這個傳回值可以被Future拿到,也就是說,Future可以拿到異步執行任務的傳回值。  

package com.itszt.test3;
import java.util.Random;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
/**
 * Callable和Future
 */
public class Test4 {
    public static void main(String[] args) {
        Callable<String> callable = new Callable<String>() {
            @Override
            public String call() throws Exception {
                return new Random().nextInt(100)+"";
            }
        };
        FutureTask<String> futureTask = new FutureTask<>(callable);
        new Thread(futureTask).start();
        try {
            Thread.sleep(5000);
            System.out.println(futureTask.get());
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (ExecutionException e) {
            e.printStackTrace();
        }
    }
}  
           

posted @ 2018-03-24 21:58 奔跑在夢想的道路上 閱讀( ...) 評論( ...) 編輯 收藏