concurrency - Mailbox 是 ForkJoinTask 但 ExecutorService 可以是 ThreadPoolExecutor:这样可以吗?
问题描述
在 Akka 2.6.10 中,邮箱是 aForkJoinTask
和Runnable
.
private[akka] abstract class Mailbox(val messageQueue: MessageQueue)
extends ForkJoinTask[Unit]
with SystemMessageQueue
with Runnable {
// Runnable method
override final def run(): Unit = {
// ...
processMailbox()
dispatcher.registerForExecution(this, false, false)
// ...
}
// ForkJoinTask method
final override def exec(): Boolean = {
// ...
run()
// ...
}
}
但是执行器服务可以配置为使用TheadPoolExecutor
(TP)而不是ForkJoinPool
(FJ)。因此,TP 可能会执行ForkJoinTask
.
这可能完全合理,但 TP 执行 FJ 任务的事实对我来说有点奇怪。任何人都可以在这里分享决策推理吗?ForkJoinTask
即使 Akka 可以执行,它对 Akka 有什么好处TheadPoolExecutor
?
解决方案
推荐阅读
- python - Python import in Init
- sql - 合并两个临时表并将公共列添加为新行并使用 sql 添加不匹配列
- javascript - 使用数据表在 v-for 列表中添加或删除项目
- c# - 当我在 ASP.NET 中编辑(更新)帖子时,图像被重置
- sql - 多对多发布到标签查询
- python - pool.apply_async, pool.map 上相当复杂的函数
- javascript - 如何使用 JSON 数据嵌套 React 组件
- python - 如何在 python 中使用多处理和使用 SQL 插入语句的函数
- c# - 在 ASP.Net MVC 或 Core 中使用 Ajax 在视图中为 DataTable 分页添加额外的列
- excel - 使用拆分 VBA 的类型不匹配