В настоящее время я работаю над реализацией многопроцессорной обработки с использованием API ThreadPoolExecutor
. Ниже приведено требование к обработкеThread Executor: запуск нескольких процессов и пула в течение 30 минут перед запуском следующего процесса
- Определенное количество. процесса Java для запуска в то время, используя ThreadPool с помощью
ExecutorService executor = Executors.newFixedThreadPool(3);
И я вношу все сам процесс работоспособного процесса банки объединить
for(int i=1; i<50; i++) { RunnableTask r=new RunnableTask(); executor.submit(r); }
и фактическая RunnableTask является следующей
public class RunnableTask implements Runnable{
public void run(){
Process p=Runtime.exec("java -jar D:\ProcessIntiate.jar");
}
Теперь, когда пул запущен, начнется только 3 процесса.
Я хочу запускать только 3 процесса за раз, и после завершения 3 процесса мой пул должен ждать 30 минут и ему нужно запустить следующие 3 процесса. И уведомление должно быть необходимо для объединения, когда все 3 процесса завершены.
Есть ли способ использования ThreadExcutorFramwork?
Почему вы хотите запустить Java-код в другом процессе в первую очередь? Вы могли бы также использовать отдельный загрузчик классов и сохранить все в JVM, который уже запущен? Просто говорю .. – GhostCat
@GhostCat, спасибо за ответ. Но фактическая бизнес-логика находится в этом банке ProcessIntiate.jar (назначая минимальную и максимальную память для этого во время работы) (java -jar -xms512m -xmx2048m D: \ ProcessIntiate.jar). Это длительный процесс, и для этого потребуется больше памяти. это процесс должен контролироваться пулом до завершения – Raj