import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
public class Callabal {
public static void main(String[] args) throws ExecutionException, InterruptedException {
// 创建一个未来任务对象
FutureTask ft = new FutureTask(new Callable() {
@Override
public Object call() throws Exception {
// call()相当于run(),只不过这个有返回值
System.out.println("开始");
Thread.sleep(1000*10);
System.out.println("结束");
int a = 100;
int b = 200;
return a+b;//自动装箱(300编程Integer)
}
});
// 创建线程对象
Thread t = new Thread(ft);
t.start();
Object obj = ft.get();//这行会导致main执行受阻(当前线程阻塞)
// 这种方式的线程,能够获取返回结果,但是效率很低
System.out.println("Hello Word!");
}
}
结果: