Оптимизация потоков в Java при 100% загрузке процессора
У меня есть приложение, которое принимает работу в очереди, а затем спины, которые отрабатываются для завершения в независимых потоках. Количество потоков невелико, скажем, до 100, но это интенсивные задачи, которые могут быстро поднять процессор до 100%.
Чтобы максимально быстро выполнить большую часть работы: лучше ли мне просто запускать больше потоков, когда мне нужно выполнить больше работы, и позволить планировщику потоков Java управлять распределением работы, или если бы он стал умнее и управлял рабочей нагрузкой, чтобы поддерживать процессор ниже 100% уведут меня быстрее?
Машина посвящена моему Java-приложению.
EDIT:
Спасибо за фантастический вклад!
Задачи имеют различную сложность и включают в себя операции ввода-вывода, поэтому наличие пула с низким потоком, скажем, 4, может привести к тому, что процессор будет работать только на 20%. У меня нет возможности узнать, сколько задач на самом деле приведет процессор к 100%.
Я подумал, должен ли я контролировать ЦП через RMI и динамически набирать объем работы вверх или вниз, или мне просто все равно, и пусть ОС справится с этим.