Contrôle des threads en Java : démarrage, arrêt et redémarrage
Démarrer un thread est aussi simple que de créer une instance de la classe Thread et appeler la méthode start(). Le thread exécutera ensuite le code dans sa méthode run().
Arrêter un thread, cependant, n'est pas aussi simple. Une fois qu’un thread est démarré, il n’existe aucun moyen direct de l’arrêter. Au lieu de cela, vous pouvez utiliser des techniques pour avertir le thread qu'il doit cesser de s'exécuter.
Une approche courante consiste à utiliser un indicateur booléen pour indiquer si le thread doit continuer à s'exécuter. Dans la méthode run() du thread, vous pouvez vérifier régulièrement l'indicateur et terminer l'exécution lorsqu'il est défini sur false.
<code class="java">// Task.java private boolean isRunning = true; @Override public void run() { while (isRunning) { // Perform tasks here } } public void stop() { isRunning = false; }</code>
Redémarrage d'un thread
Redémarrage un thread signifie créer une nouvelle instance de la classe Thread et la démarrer. En effet, les threads ne peuvent pas être réutilisés une fois arrêtés. Cependant, il est important de noter que les données ou les états conservés par le fil de discussion d'origine ne seront pas transférés vers le nouveau fil de discussion.
Option 1 : Créer un nouveau fil de discussion
<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 : Notifier et redémarrer
<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>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!