Java Concurrency API 为您提供了构建的接口Executor
和ExecutorService
接口,并附带了几个具体的实现(ThreadPoolExecutor
和ScheduledThreadPoolExecutor
)。
我对 Java Concurrency 完全陌生,很难找到几个非常相似的问题的答案。我决定将它们捆绑在一起,而不是把所有这些小问题弄得一团糟,因为可能有一种方法可以一口气回答它们(可能是因为我在这里没有看到全貌):
- 实现自己的
Executor
/是常见的做法ExecutorService
吗?在什么情况下你会这样做而不是使用我上面提到的两个结核?在什么情况下,这两种结核比“本土”的东西更可取? - 我不明白所有并发集合如何与
Executor
s 相关。例如,是否ThreadPoolExecutor
使用,例如,ConcurrentLinkedQueue
在引擎盖下对提交的任务进行排队?或者您(API 开发人员)是否应该ConcurrentLinkedQueue
在并行化run()
方法中选择和使用?基本上,那里的并发集合是由Executor
s 内部使用的,还是您使用它们来帮助编写非阻塞算法? - 您可以配置在后台使用哪些并发集合
Executor
(存储提交的任务),这是常见的做法吗?
提前致谢!