美文网首页
FutureTask

FutureTask

作者: SingleException | 来源:发表于2021-09-16 15:04 被阅读0次

    存在原理

    FutureTask是为了弥补Thread的不足而设计的,它可以让程序员准确地知道线程什么时候执行完成并获得到线程执行完成后返回的结果(如果有需要)。
    

    场景

        4个同学, 1同学 1+2...5   ,  2同学 10+11+12....50, 3同学 60+61+62,  4同学 100+200
        第2个同学计算量比较大, FutureTask单开启线程给2同学计算,先汇总 1 3 4 ,最后等2同学计算位完成,统一汇总
    

    代码

    package com.myCallable;
    
    import org.junit.Test;
    
    import java.util.concurrent.Callable;
    import java.util.concurrent.FutureTask;
    
    
    class MyThread implements Callable {
    
        @Override
        public Integer call() throws Exception {
            System.out.println(Thread.currentThread().getName()+" come in callable");
            Thread.sleep(5000);
            return 200;
        }
    }
    
    public class MyCallableDemo {
    
        @Test
        public  void test1() throws Exception{
            FutureTask futureTask1 = new FutureTask(new MyThread());
            futureTask1.run();
            Thread.sleep(6000);
            Object get = futureTask1.get();  // 阻塞直到取到结果
            System.out.println("get"+get);
            System.out.println("hah");
        }
    }
    
    

    相关文章

      网友评论

          本文标题:FutureTask

          本文链接:https://www.haomeiwen.com/subject/jlirgltx.html