public class Demo01 {
public static void main(String[] args) throws ExecutionException, InterruptedException {
//new Thread(new Runnable()).start();
//new Thread(new FutureTask<>()).start();
//new Thread(new FutureTask<>(Callable)).start();
MyThread myThread = new MyThread();
//適配器 FutureTask
FutureTask futureTask = new FutureTask(myThread);
new Thread(futureTask,"A").start();
//獲取Callable的返回結(jié)果
Integer out = (Integer) futureTask.get();
System.out.println(out);
}
}
class MyThread implements Callable<Integer>{
@Override
public Integer call() throws Exception {
System.out.println("Call()");
return 1024;
}
}
需要留意:
- 多線程并發(fā)的情況下夹抗,使用Callable,運行結(jié)果會做緩存處理纵竖,提高效率漠烧。
- 獲取返回標識可能會遇到阻塞,一般會放在程序最后執(zhí)行靡砌,或者采取異步調(diào)用方式已脓。