我们在代码里面想要去使用Callable的时候,不能够直接进行使用,打个比方就是,你想认识一个你朋友的朋友,那么直接的方法就是经过你朋友来认识他,Callable也是如此,通过Runnable来进行Thread的搭线
根据api文档,我们可以了解懂啊FutureTask是跟Runnable和Callable都相互关联的,由此我们可以通过它让他们建立联系。
package com.kang.Callable;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
public class Callable_test {
public static void main(String[] args) throws ExecutionException, InterruptedException {
new Thread().start();
MyThread myThread = new MyThread();
FutureTask futureTask = new FutureTask(myThread);
new Thread(futureTask,"A").start(); //有缓存
Integer o = (Integer)futureTask.get(); //可能会阻塞
System.out.println(o);
}
}
class MyThread implements Callable<Integer>{
@Override
public Integer call() throws Exception {
System.out.println(110);
return 110;
}
}