实现Callable接口。(jdk8新特性)
这种方式实现的线程可以获取线程的返回值(一开始的那两种不能获取返回值)
缺点:效率低
package com.aaa;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
public class FutureTaskTest {
public static void main(String[] args) {
//创建一个未来任务类
FutureTask futureTask=new FutureTask(new Callable() {
@Override
public Object call() throws Exception {
int a =100;
int b=200;
Thread.sleep(1000);//睡觉了
return a+b;
}
});
//创建线程对象
Thread th=new Thread(futureTask);
th.start();
//获取线程的返回结果
try {
Object o = futureTask.get();
System.out.println(o);
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
//main方法这里的线程要想执行必须等待get()方法的执行结束。
System.out.println("ttt");
}
}