A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

代码如下:

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();

---------------------
【转载,仅作分享,侵删】
作者:river66
原文:https://blog.csdn.net/river66/article/details/87695189
版权声明:本文为博主原创文章,转载请附上博文链接!

1 个回复

正序浏览
奈斯,感谢分享
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马