newCachedThreadPool() 与 newFixedThreadPool()
我什么时候应该使用其中一种?哪种策略在资源利用方面更好?
java concurrency multithreading executorservice threadpoolexecutor
我有一个应用程序接受队列上的工作,然后旋转,在独立的线程上完成.线程数量不大,比如高达100,但这些是密集型任务,可以快速将CPU提升到100%.
为了最快地完成大部分工作:我最好在我需要做更多工作时启动更多线程,让Java线程调度程序处理分配工作,或者更聪明地管理工作负载以保持CPU低于100%让我更快?
这台机器专用于我的java应用程序.
编辑:
感谢您的精彩输入!
这些任务具有不同的复杂性并且涉及I/O,因此具有较低的4个线程池可能只是将CPU运行到20%.我无法知道有多少任务实际上将CPU带到100%.
我的想法是我应该通过RMI监控CPU并动态拨打上下工作,或者我应该不关心并让操作系统处理它.