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