ExecutorService——<T> Future<T> submit(Callable<T> task)

接口长什么样?

Future future = executor.submit(task);

这个返回值是什么意思?

提交任务后,会立即返回一个Future对象,它是一个句柄,你可以根据这个Future对象跟踪任务的执行情况。

Future对象具体有哪些功能呢?

1.可以随时查看任务的完成情况 => future.isDone()

2.如果任务完成了,完成结果是什么 => future.get()

3.可以选择性地取消任务 => future.cancel()

所谓的提交任务是什么意思?为什么会立即返回?

提交任务其实就是将任务,放入线程池的待执行队列里面。放入队列并不需要多长时间,所以可以立即返回。

使用Future有什么好处?

可以让多个任务的执行时间重叠,减少总的执行时间。

实例:

ExecutorService exec = Executors.newFixedThreadPool(3);
Future<List<Map<String, Object>>> list1 = exec.submit(() -> {
    return querySQL1(args...);
});
Future<List<Map<String, Object>>> list2 = exec.submit(() -> {
    return querySQL2(args...);
});
exec.shutdown();

try {
    if (!exec.awaitTermination(5000, TimeUnit.SECONDS)) {
        exec.shutdownNow();
    }
} catch (InterruptedException e) {
    exec.shutdownNow();
    Thread.currentThread().interrupt();
}

转载于

https://www.cnblogs.com/longfurcat/p/9484271.html
------本页内容已结束,喜欢请分享------

感谢您的来访,获取更多精彩文章请收藏本站。

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容