Werte von Thread-Operationen zurückgeben
Bei der Multithread-Programmierung erfordert die Interaktion zwischen Threads häufig den Austausch von Daten. Ein häufiges Szenario ist der Versuch, das Ergebnis einer Operation abzurufen, die in einem separaten Thread ausgeführt wird.
Betrachten Sie den folgenden Beispielcode:
<code class="java">public void test() { Thread uiThread = new HandlerThread("UIHandler") { public synchronized void run() { int value = 2; // To be returned to test() } }; uiThread.start(); }</code>
In diesem Fall wird ein Wert innerhalb eines separaten Threads geändert Thread (in diesem Fall der „UIHandler“). Die Herausforderung besteht darin, diesen Wert an die aufrufende Methode zurückzugeben, die die geänderten Daten abrufen muss.
Ausnutzung des Status eines Objekts
Ein Ansatz für dieses Problem ist die Verwendung von Der Zustand eines Objekts zum Speichern und Abrufen der erforderlichen Daten. Sie können beispielsweise eine benutzerdefinierte Klasse erstellen, die die Runnable-Schnittstelle implementiert, sodass sie als Thread ausgeführt werden kann. Innerhalb dieser Klasse können Sie ein Feld zum Speichern des vom Thread berechneten Werts haben:
<code class="java">public class Foo implements Runnable { private volatile int value; @Override public void run() { value = 2; } public int getValue() { return value; } }</code>
Mit dieser Implementierung können Sie die Thread-Erstellung und den Abruf des berechneten Werts trennen. Hier ist ein Beispiel:
<code class="java">Foo foo = new Foo(); Thread thread = new Thread(foo); thread.start(); thread.join(); int value = foo.getValue(); // Retrieve the modified value</code>
Wichtige Überlegungen
Es ist wichtig zu beachten, dass Threads keine nativen Werte zurückgeben. Indem Sie einen Thread wie eine gewöhnliche Klasse referenzieren und seinen Wert mithilfe von Methoden wie getValue() anfordern, können Sie diese Lücke schließen. Darüber hinaus sollten Sie Synchronisierungsmechanismen sicherstellen, um Datenwettlaufbedingungen zu verhindern und die Thread-Sicherheit aufrechtzuerhalten.
Das obige ist der detaillierte Inhalt vonWie gebe ich Werte von Thread-Operationen in Java zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!