代码如下:
String callableReturnValue = null;
Callable<String> callable = new Callable<String>() {
@Override
public String call() throws Exception {
Thread.sleep(1000);
return "线程的返回值";
}
};
FutureTask<String> task = new FutureTask<String>(callable);
//任务执行好了则取值,否则取消任务。
if (task.isDone()) {
callableReturnValue = task.get();//获得线程的返回值
} else {
task.cancel(true);
}
if(task.isCancelled()){
System.out.println("任务被取消了!");
}else{
System.out.println(callableReturnValue);
}
其他方案:Callable+线程池+Future
ExecutorService executorService = Executors.newCachedThreadPool();
Future<String> future1 = executorService.submit(callable);
Thread.sleep(1000);
callableReturnValue = future1.get();
如果对您有用的话赞一下呗!谢谢谢谢~