Callable
(第三种线程实现方式)
Callable与Runnable的区别
Callable与Runnable的区别
实现方法名称不一样
有返回值
抛出了异常
class Thread1 implements Runnable{
@Override
public void run() {
}
}
class Thread2 implements Callable<Integer>{
//1.方法名称不一样 2.有返回值 3.抛出了异常
@Override
public Integer call() throws Exception {
return null;
}
}
Callable的使用
Callable线程类的运行,需要依靠FutureTask的封装,因为Thread类的构造方法只支持Runnable及其子类,于是就需要继承了Runnable的FutureTast来对Callable子类进行封装,下面是FurtureTast的继承关系源代码:
public class FutureTask<V> implements RunnableFuture<V> {public interface RunnableFuture<V> extends Runnable, Future<V> {
public class CallableDemo {
public static void main(String[] args) throws ExecutionException, InterruptedException {
FutureTask<Integer> futureTask = new FutureTask<>(new Thread2());
new Thread(futureTask).start();
System.out.println(futureTask.get());
}
}
class Thread2 implements


6109

被折叠的 条评论
为什么被折叠?



