Derzeit arbeite ich Multiprozessoring mit ThreadPoolExecutor
API implementieren. Nachfolgend ist die Anforderung zu verarbeiten:Thread Executor: läuft mehrere Prozesse und Pool warten 30 Minuten vor dem nächsten Prozess
- Definierte Nr. von Java-Prozess zu einem Zeitpunkt unter Verwendung von Threadpool mit
ExecutorService executor = Executors.newFixedThreadPool(3);
und ich bin die Einreichung aller eigentlichen Prozesses des runnable jar Prozesses zu laufen zu bündeln ist
for(int i=1; i<50; i++) { RunnableTask r=new RunnableTask(); executor.submit(r); }
und tatsächliche RunnableTask folgt
public class RunnableTask implements Runnable{
public void run(){
Process p=Runtime.exec("java -jar D:\ProcessIntiate.jar");
}
Jetzt, wenn der Pool gestartet wird, wird nur 3 Prozess parallel gestartet.
Ich möchte nur 3 Prozesse gleichzeitig ausführen und nach Abschluss von 3 Prozess muss mein Pool 30 Minuten warten und muss die nächsten 3 Prozesse starten. Außerdem muss eine Benachrichtigung zum Pooling erforderlich sein, wenn alle 3 Prozesse abgeschlossen sind.
Gibt es eine Möglichkeit mit ThreadExcutorFramwork?
Warum möchten Sie Java-Code in einem anderen Prozess überhaupt ausführen? Sie könnten auch einen eigenen Klassenlader verwenden und alles in der JVM behalten, die bereits läuft? Nur zu sagen .. – GhostCat
@GhostCat, vielen Dank für die Antwort. Die eigentliche Geschäftslogik befindet sich jedoch in diesem jar ProcessIntiate.jar (diesem wird bei der Ausführung ein minimaler und ein maximaler Speicher zugewiesen) (java -jar -xms512m -xmx2048m D: \ ProcessIntiate.jar). Dies ist ein langwieriger Prozess und wird mehr Speicher dafür verbrauchen. dies ist Prozess muss von Pool überwacht werden, bis zum Abschluss – Raj