Übergabe von Parametern an Java-Threads
In Java werden Threads durch die Implementierung der Runnable-Schnittstelle erstellt. Standardmäßig akzeptieren ausführbare Objekte keine Argumente. Wenn Sie jedoch Parameter an einen Thread übergeben müssen, gibt es zwei Strategien: Wrapper-Klassen oder anonyme Klassen.
Wrapper-Klassen
Eine Möglichkeit, Parameter an a zu übergeben Thread soll eine Wrapper-Klasse verwenden. Dabei wird eine Klasse erstellt, die das Runnable-Interface implementiert und in ihrem Konstruktor die gewünschten Parameter entgegennimmt. Hier ist ein Beispiel:
public class ParameterizedRunnable implements Runnable {
private final Object parameter;
public ParameterizedRunnable(Object parameter) {
this.parameter = parameter;
}
public void run() {
// Use the passed parameter here
}
}
Sie können dann diese Klasse verwenden, um einen Thread zu erstellen und ihm den Parameter zu übergeben:
Runnable runnable = new ParameterizedRunnable(myParameter);
new Thread(runnable).start();
Anonyme Klassen
Anonyme Klassen können auch verwendet werden, um Parameter an Threads zu übergeben. Eine anonyme Klasse ist eine Klasse, die gleichzeitig definiert und instanziiert wird. Hier ist ein Beispiel für die Verwendung einer anonymen Klasse zum Übergeben eines Parameters an einen Thread:
Thread thread = new Thread(() -> {
// Use the passed parameter here
}, myParameter);
thread.start();
In diesem Beispiel definiert der an den Thread-Konstruktor übergebene Lambda-Ausdruck eine anonyme Klasse, die die Runnable-Schnittstelle implementiert und den myParameter als Parameter empfängt.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3