zoukankan      html  css  js  c++  java
  • 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 有结果,再取真实的结果。

  • 相关阅读:
    编程题目: PAT 1012. 数字分类 (20)
    编程题目: PAT 1011. A+B和C (15)
    Poj3683(2-set
    LightOJ 1427(AC自动机
    UVA 11990(BIT套treap
    网络流汇总....
    10月——备战区域赛
    去掉ubuntu的文件管理器中“位置”栏里的无用标签
    Poj 2104(主席树入门
    Poj 1568(极大极小搜索
  • 原文地址:https://www.cnblogs.com/pickKnow/p/11078908.html
Copyright © 2011-2022 走看看