Thread-Steuerung in Java: Starten, Stoppen und Neustarten
Das Starten eines Threads ist so einfach wie das Erstellen einer Instanz der Thread-Klasse und Aufruf der start()-Methode. Der Thread führt dann den Code innerhalb seiner run()-Methode aus.
Das Stoppen eines Threads ist jedoch nicht so einfach. Sobald ein Thread gestartet ist, gibt es keine direkte Möglichkeit, ihn zu stoppen. Stattdessen können Sie Techniken verwenden, um dem Thread mitzuteilen, dass er die Ausführung stoppen soll.
Ein gängiger Ansatz besteht darin, ein boolesches Flag zu verwenden, um anzugeben, ob der Thread weiter ausgeführt werden soll. Innerhalb der run()-Methode des Threads können Sie das Flag regelmäßig überprüfen und die Ausführung beenden, wenn es auf false gesetzt ist.
<code class="java">// Task.java private boolean isRunning = true; @Override public void run() { while (isRunning) { // Perform tasks here } } public void stop() { isRunning = false; }</code>
Neustart eines Threads
Neustart Ein Thread bedeutet, eine neue Instanz der Thread-Klasse zu erstellen und zu starten. Dies liegt daran, dass Threads nach dem Stoppen nicht wiederverwendet werden können. Es ist jedoch wichtig zu beachten, dass alle vom ursprünglichen Thread verwalteten Daten oder Zustände nicht auf den neuen Thread übertragen werden.
Option 1: Erstellen Sie einen neuen Thread
<code class="java">Thread taskThread = new Thread(new Task()); taskThread.start(); // Later, to restart the thread... taskThread = new Thread(new Task()); taskThread.start();</code>
Option 2: Benachrichtigen und neu starten
<code class="java">// Task.java private Object lock = new Object(); @Override public void run() { while (true) { synchronized (lock) { if (shouldStop) { try { lock.wait(); } catch (InterruptedException e) {} } } // Perform tasks here } } public void stop() { synchronized (lock) { shouldStop = true; lock.notify(); } } public void restart() { synchronized (lock) { shouldStop = false; lock.notify(); } }</code>
Das obige ist der detaillierte Inhalt vonWie steuert man Threads in Java: Starten, Stoppen und Neustarten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!