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