Thread Future模式

多线程不管是extends Thread 还是 implements Runnable 都是要重写run 方法来实现,这两种方式子线程都没有返回值。

如果要实现主线程对子线程的监听,让子线程有返回值,可以用implememts Callable<T> 方式:

import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;

public class App6 {
    public static void main(String[] args) throws Exception {
        ExecutorService newCachedThreadPool = Executors.newCachedThreadPool();
        Future<String> submit = newCachedThreadPool.submit(new TaskCallable());
        String result = submit.get(); //获取返回值
        System.out.println(result);
    }

}

class TaskCallable implements Callable<String>{
    @Override
    public String call() throws Exception {
        System.out.println(Thread.currentThread().getName());
        return "Hello World";
    }
}

 Future 模式的核心:去除了主函数的等待时间,并且使得原先需要等待的时间段可以去处理其他的业务逻辑。

 Future模式:对于多线程,如果线程A 需要去等待线程B的结果,那么线程A 没有必要去等待B,直到B 有结果,可以取一个未来的Future,等到B 有结果,再取真实的结果。

posted @ 2019-06-24 19:18  Chris,Cai  阅读(1028)  评论(0编辑  收藏  举报