Callable的简单实现
package com.itheima.callable;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
public class CallableTest {
public static void main(String[] args) throws ExecutionException, InterruptedException {
//new Thread(new Future<V>(Callable)).start();
MyThread thread=new MyThread();
FutureTask integerFutureTask = new FutureTask(thread); //适配器
new Thread(integerFutureTask,"A").start();
new Thread(integerFutureTask,"B").start();//只输出一个call是因为其有缓存
Integer o = (Integer) integerFutureTask.get(); //获得Callable的返回值结果
System.out.println(o);
}
}
class MyThread implements Callable<Integer>{
@Override
public Integer call() throws Exception {
System.out.println("call()");
return 1024;
}
}
注意:
1.当有多个线程时,输出结果有缓存。
2.结果可能需要等待,因为get()方法耗时较长,也可能被阻塞。