Verzeihen Sie meine Ignoranz, wenn dies eine grundlegende Frage ist.Hintergrund Verarbeitung Java
Ich möchte verstehen, wie kann ich die Steuerung von einem Modul zurückgeben und die Verarbeitung im Hintergrund starten?
Lets starten Komponente A ruft Komponente B auf. Komponente B führt einige grundlegende Verarbeitung aus, startet einen Hintergrundthread und gibt sofort die Steuerung an A zurück. Wenn der Hintergrundthread seine Verarbeitung beendet, speichert er das Ergebnis in einem Persistenzspeicher. Die gesamte Verarbeitung durch diesen Hintergrund-Thread ist zeitaufwendig und A kann nicht warten, bis der Hintergrund-Thread beendet ist.
Component A {
Http Call component B
}
Component B {
// Got request from component A
start background thread();
return; // don't wait till background thread finishes off
}
background thread() {
// time consuming task
}
Wie kann ich dieses Verhalten in Java erreichen? Ich glaube nicht, dass es sich um eine völlig asynchrone Form der Verarbeitung handelt, da die Kommunikation über eine HTTP-Verbindung mit Timeout-Einstellungen stattfindet.
Update:
Component A:
Receives Http call
Component B:
Approach1:
Runnable runnable = new MyThread();
new Thread(runnable).start();
Approach2:
ExecutorService exec = Executors.newSingleThreadExecutor();
exec.execute(new MyThread());
exec.shutdown();
Sie die HTTP-Aufruf zurück Beide oben genannten Ansätze hat mir geholfen, die Hintergrundverarbeitung zu starten und das Rück sofortige Kontrolle zu A.
Haben Sie die Nebenläufigkeit Dienstprogramme betrachtet? Wenn nicht, schauen Sie hier: https://docs.oracle.com/javase/tutorial/essential/concurrency/runthread.html – Bajal