黑马程序员技术交流社区

标题: 【上海校区】创建有返回值的线程(Callable+FutureTask) [打印本页]

作者: 不二晨    时间: 2019-2-22 16:37
标题: 【上海校区】创建有返回值的线程(Callable+FutureTask)
代码如下:

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
版权声明:本文为博主原创文章,转载请附上博文链接!


作者: 不二晨    时间: 2019-2-26 15:33
奈斯,感谢分享




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2