有时候我们需要获取到线程执行完之后,返回的结果,
Thread thread = new Thread("JoinUse"){
@Override
public void run() {
super.run();
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("runover...");
}
};
FutureTask<String> futureTask = new FutureTask<String>(thread, "abc") ;
new Thread(futureTask).start();
while(!futureTask.isDone()){
Thread.sleep(500);
System.out.println("not done");
}
if (futureTask.isDone()){
System.out.println("done.");
}
System.out.println("result:"+futureTask.get());
结果打印:
// not done
// not done
// not done
// not done
// not done
// not done
// not done
// not done
// not done
// runover...
// not done