Zugriff auf Rückgabewerte von Threads
Beim Einsatz von Multithreading in der Programmierung stößt man häufig auf das Konzept der Rückgabe von Werten von Threads. Dieser Artikel befasst sich mit einem Fall, in dem ein Wert innerhalb eines Threads geändert wird, und unser Ziel ist es, ihn innerhalb der Aufrufmethode abzurufen.
Stellen Sie sich ein Szenario vor, in dem ein HandlerThread innerhalb eines test() Methode zum Ausführen einer Aufgabe. Eine Variable mit dem Namen value wird innerhalb des Threads geändert und wir versuchen, ihren aktualisierten Wert an die Methode test() zurückzusenden.
Um dieses Ziel zu erreichen, muss die Thread kann einen Wert nicht direkt zurückgeben. Stattdessen können wir einen alternativen Ansatz verfolgen. Wir erstellen eine Klasse, die die SchnittstelleRunnable implementiert, wie im folgenden Codeausschnitt gezeigt:
public class Foo implements Runnable { private volatile int value; @Override public void run() { value = 2; } public int getValue() { return value; } }Innerhalb dieser Klasse deklarieren wir eine flüchtige Ganzzahlvariable
Wert und überschreiben Sie die Methode run(), um ihren Wert zu aktualisieren. Zusätzlich definieren wir die Methode getValue(), um den aktualisierten Wert abzurufen.
Um diesen Ansatz zu nutzen, erstellen wir eine Instanz der KlasseFoo und instanziieren ein Thread Objekt, das diese Instanz als Ziel verwendet. Runnable:
Foo foo = new Foo(); Thread thread = new Thread(foo);Wir initiieren den Thread und verbinden ihn mit dem Hauptthread:
thread.start(); thread.join();Endlich können wir ihn abrufen den aktualisierten
Wert durch Zugriff auf die getValue()-Methode der Foo-Instanz:
int value = foo.getValue();Durch diesen Ansatz geben wir effektiv a zurück Wert aus dem Thread, indem Sie eine
Runnable-Klasse erstellen, die den gewünschten Wert kapselt und ihn über eine Getter-Methode verfügbar macht. Dadurch können wir innerhalb der Aufrufmethode auf den aktualisierten Wert zugreifen.
Das obige ist der detaillierte Inhalt vonWie ruft man Werte ab, die in einem Thread in Java geändert wurden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!