学习内容来自尚硅谷周阳老师
package geovis.demo;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
class MyCallAble implements Callable<Integer>{
@Override
public Integer call() throws Exception {
System.out.println("1233223");
return 123;
}
}
/**
*
*使用Callable的意义在于可以返回线程中的方法的数据
*
* 如何找到FutureTask类来创建线程
* Thread构造方法只支持Runable及其实现类的对象,不支持Callable,因此需要
* 找到一个实现了Runable的类,并且这个类操作了callable接口的实现类,以这个
* 类为参数传递
* 这是第三种开启线程的方式,用于并行计算流程。注意:get方法一般放到最后一行,
* 让其他方法和线程同时进行,否则开启线程的意义将不存在
* 在这里同一个方法同样的参数连续调用两次只会执行一次,例如:
* new Thread(futureTask,"A").start();
* new Thread(futureTask,"B").start();
*/
public class CallAbleTest {
public static void main(String[] args) throws ExecutionException, InterruptedException {
FutureTask<Integer> futureTask = new FutureTask(new MyCallAble());
new Thread(futureTask,"A").start();
Integer result = futureTask.get();
System.out.println(result);
}
}