存在原理
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");
}
}
网友评论