我有一个应用程序,它接受队列中的工作,并将该工作分配给独立线程来完成。线程数量不是很多,最多达到100个,但这些任务很密集,并且可以很快将CPU推高到100%。
为了尽快完成大量工作:我是否最好在需要更多工作时启动更多线程,并让Java线程调度程序处理工作分配,或者更智能地管理工作负载以使CPU保持在100%以下并让我更快地完成工作?
该机器专用于我的Java应用。
编辑:感谢您的精彩建议!任务的复杂性和涉及I/O,因此具有较低的线程池(例如4)可能仅将CPU运行到20%。我无法知道有多少任务会实际将CPU推到100%。我想知道是否应该通过RMI监视CPU并动态调整工作量,还是只需让操作系统处理即可。
为了尽快完成大量工作:我是否最好在需要更多工作时启动更多线程,并让Java线程调度程序处理工作分配,或者更智能地管理工作负载以使CPU保持在100%以下并让我更快地完成工作?
该机器专用于我的Java应用。
编辑:感谢您的精彩建议!任务的复杂性和涉及I/O,因此具有较低的线程池(例如4)可能仅将CPU运行到20%。我无法知道有多少任务会实际将CPU推到100%。我想知道是否应该通过RMI监视CPU并动态调整工作量,还是只需让操作系统处理即可。