Executor Framework
Java предоставляет все эти возможности для вас. Вам не нужно создавать ни класс Process
, ни очередь.
Каждая из ваших задач должна реализовывать интерфейс Runnable
или Callable
.
Отправьте их в исполнительную службу, как описано в учебнике Oracle . Служба executor действует как ваша очередь, направляя отправленные задачи в доступный поток.
Для контроля выполнения ваших задач вы можете захватить возвращенный объект Future
.
Если вы хотите Максимум четыре задачи должны выполняться одновременно, создайте службу executor с резервным пулом потоков из четырех потоков.
Но остерегайтесь чрезмерного планирования. Для четырехъядерного компьютера вы можете использовать менее четырех потоков, если ваши задачи требуют значительных ресурсов процессора. На вашем компьютере есть другие задачи, такие как задачи ОС, запуск JVM и запуск других приложений. С другой стороны, если ваши задачи не нагружают процессор, поэтому они тратят много времени на ожидание, например, на ожидание возврата сетевых вызовов, то вам может потребоваться больший пул потоков.
Все это было рассмотрено многими раз уже на переполнение стека. Так что ищите, чтобы узнать больше.
И обязательно прочитайте книгу Java Параллелизм на практике Гетца и др.