一.与Runnable的区别
1.可以有返回值,获取返回值时可能需要等待,会阻塞
2,可以抛出异常
3.方法不同,run/call
4.
二.代码测试:
public class CallableTest {
public static void main(String[] args) throws ExecutionException, InterruptedException {
//怎么启动Callable---用futurTask来做中间类传递
FutureTask<Integer> futureTask = new FutureTask<>(new MyThread());
new Thread(futureTask).start();
Integer integer = futureTask.get(); //这个get 方法可能会产生阻塞!把他放到 最后
System.out.println(integer);
}
}
class MyThread implements Callable<Integer>{
@Override
public Integer call() throws Exception {
System.out.println("Call()");
return 1024;
}
}