Maison > Java > javaDidacticiel > le corps du texte

Comment contrôler les threads en Java : démarrage, arrêt et redémarrage ?

Mary-Kate Olsen
Libérer: 2024-11-01 12:36:02
original
762 Les gens l'ont consulté

How to Control Threads in Java: Starting, Stopping, and Restarting?

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!