基于callbale创建线程,可以获取线程返回值。实际开发中使用FutureTask结合Callable实现多线程并发调用。在调用futreTask的get()方法时该方法为阻塞方法,实际开发中可设置超时时间,超过超时时间会抛出异常进行相应业务提示。
import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;
import java.util.concurrent.TimeUnit;
public class Demo2 implements Callable<Integer>{
@Override
public Integer call() throws Exception {
System.err.println("计算处理中...");
Thread.sleep(3000);
return 1;
}
public static void main(String[] args) {
//构建任务
Demo2 t2 = new Demo2();
FutureTask<Integer> task = new FutureTask<Integer>(t2);
//启动线程
new Thread(task).start();
//获取结果
try {
Integer integer = task.get(5000,TimeUnit.MILLISECONDS);
System.err.println("线程执行结果:"+integer);
} catch (Exception e) {
e.printStackTrace();
}
}
}