线程Thread是没有返回值的,如果需要获取子线程的返回值,就需要用到Futrue了。
FutrueTask继承RunnableFuture,而RunnableFutrue又继承Runnable和Futrue接口,故可以作为Runable传入Thread的构造方法中。
FutureTask<String> stringFutureTask = new FutureTask<>(new Callable<String>() {
@Override
public String call() throws Exception {
Thread.sleep(3000);
return "I'm from futrueTask";
}
});
new Thread(stringFutureTask).start();
//当子线程运行完毕后,可以直接获取结果。否则阻塞在这里,直到结果返回。
String s = stringFutureTask.get();
System.out.println(s);
结果:
I'm from futrueTask






网友评论