【每日阅读】2020年12月28日-获取线程执行结果

// 提交Runnable任务
Future<?> submit(Runnable task);
// 提交Callable任务
<T> Future<T> submit(Callable<T> task);
// 提交Runnable任务及结果引用  
<T> Future<T> submit(Runnable task, T result);

Future有如下方法:

// 取消任务
boolean cancel( boolean mayInterruptIfRunning);
// 判断任务是否已取消
boolean isCancelled();
// 判断任务是否已结束
boolean isDone();
// 获得任务执行结果(会阻塞住)
get();
// 获得任务执行结果,支持超时(会阻塞住)
get(long timeout, TimeUnit unit);

还有FutureTask:

FutureTask(Callable<V> callable);
FutureTask(Runnable runnable, V result);



// 创建FutureTask
FutureTask<Integer> futureTask = new FutureTask<>(()-> 1+2);
// 创建线程池
ExecutorService es = Executors.newCachedThreadPool();
// 提交FutureTask 
es.submit(futureTask);
// 获取计算结果
Integer result = futureTask.get();



// 创建FutureTask
FutureTask<Integer> futureTask = new FutureTask<>(()-> 1+2);
// 创建并启动线程
Thread T1 = new Thread(futureTask);
T1.start();
// 获取计算结果
Integer result = futureTask.get();

原创文章,作者:geekgao,如若转载,请注明出处:https://www.geekgao.cn/archives/2768

(0)
上一篇 2020年12月27日 下午11:22
下一篇 2021年1月5日 下午10:59

相关推荐

发表回复

您的电子邮箱地址不会被公开。

GitHub
分享本页
返回顶部