我有一个将作业分派到线程池的主线程。我正在使用 Java 的 Executor 框架。
从分析器(VirtualVM)我可以看到每个线程的活动:我可以看到主线程正在等待很多(因为执行程序的队列有上限),这意味着执行程序的队列大部分时间都是满的。然而,执行者的线程并不像我想象的那么忙。他们中的大多数人的等待时间为 75%。在 virtualVM 中,它说它在 Monitor 上等待。
谁能解释为什么会这样?为什么执行程序线程会等待,而仍有大量工作可做?以及如何提高执行器的性能?从而提高整体性能?关于执行者等待监视器的更多细节会很棒。
在工作人员中运行的工作只是一些计算,它不依赖于其他任何东西,也不与任何其他线程通信(不同步),除了最后,它将数据放入数据库,使用它自己的连接.