【每日阅读】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

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

GitHub
分享本页
返回顶部