Für jede Anweisung oder Anforderung wird ein neuer Thread zugewiesen, und dieser Thread führt die Verarbeitung durch. Dies ist das Thread-Per-Message-Muster.
Betrachten Sie das folgende Beispiel. Die Hauptklasse fordert die Host-Klasse auf, Zeichen anzuzeigen. Die Host-Klasse erzeugt und startet einen Thread, der die Anforderung verarbeitet. Der gestartete Thread verwendet die Helper-Klasse, um die eigentliche Anzeige durchzuführen.
(Den gesamten Code finden Sie in diesem Handbuch.)
Host.java
public class Host {
private final Helper helper = new Helper();
public void request(final int count, final char c) {
new Thread() {
public void run() {
helper.handle(count, c);
}
}.start();
}
}
Kundenrolle Die Client-Rolle gibt eine Anforderung an die Host-Rolle aus. Die Client-Rolle weiß nicht, wie die Host-Rolle die Anforderung erfüllt. Im Beispielprogramm spielte die Hauptklasse diese Rolle.
Host-Rolle Wenn die Host-Rolle eine Anforderung von der Client-Rolle empfängt, erstellt sie einen neuen Thread und startet ihn. Der neu erstellte Thread verwendet die Hilfsrolle, um die Anforderung zu verarbeiten. Im Beispielprogramm spielte die Host-Klasse diese Rolle.
Helferrolle Die Hilfsrolle bietet der Host-Rolle eine Funktion zum Verarbeiten von Anforderungen. Ein neuer Thread, der von der Host-Rolle erstellt wurde, verwendet die Helper-Rolle. Im Beispielprogramm spielte die Helper-Klasse diese Rolle.
** Die Reihenfolge, in der die Handle-Methode im Thread-Per-Message-Muster verarbeitet wird, ist nicht unbedingt die Reihenfolge, in der die Anforderungsmethode aufgerufen wird. Daher ist es unangemessen, dieses Muster zu verwenden, wenn die Reihenfolge der Verarbeitung sinnvoll ist. ** **.
** Im Thread-Per-Message-Muster wartet die Anforderungsmethode nicht auf den Abschluss der Handle-Methode. Daher kann das Ausführungsergebnis des Handles auf der Anforderungsseite nicht erhalten werden. Daher wird dieses Muster verwendet, wenn das Verarbeitungsergebnis nicht benötigt wird. ** Wenn Sie das Ergebnis der Verarbeitung wünschen, verwenden Sie das Future-Muster.
Beziehung Zusammenfassung der in Java-Sprache erlernten Entwurfsmuster (Multithreaded Edition) "(Teil 1) Zusammenfassung der in Java-Sprache erlernten Entwurfsmuster (Multithreaded Edition) "(Teil 2) Zusammenfassung der in Java-Sprache erlernten Entwurfsmuster (Multi-Thread-Edition) "(Teil 3) Zusammenfassung der in Java-Sprache erlernten Entwurfsmuster (Multithread Edition) "(Teil 4) Zusammenfassung der in Java-Sprache erlernten Entwurfsmuster (Multithread Edition) "(Teil 5) Zusammenfassung der in Java-Sprache erlernten Entwurfsmuster (Multithread Edition) "(Teil 6) Zusammenfassung der in Java-Sprache erlernten Entwurfsmuster (Multithreaded Edition) "(Teil 7) Zusammenfassung der in Java-Sprache erlernten Entwurfsmuster (Multithreaded Edition) "(Teil 8)
Recommended Posts