代码之家  ›  专栏  ›  技术社区  ›  yiksanchan

邮箱是一个ForkJoinTask,但ExecutorService可以是ThreadPoolExecutor:可以吗?

  •  0
  • yiksanchan  · 技术社区  · 5 年前

    ForkJoinTask 以及 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()
        // ...
      }
    }
    

    但executor服务可以配置为使用 TheadPoolExecutor (TP)而不是 ForkJoinPool (福建)。因此,TP有可能执行 ForkJoinTask .

    这也许完全合理,但TP执行FJ任务的事实在我看来有点奇怪。这里有人能分享决策推理吗?怎么会呢 ForkJoinTask 即使可以由 工具执行器

    0 回复  |  直到 5 年前