ホームページ  >  記事  >  Java  >  Java でスレッドを制御する方法: 開始、停止、再起動?

Java でスレッドを制御する方法: 開始、停止、再起動?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-01 12:36:02747ブラウズ

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

Java のスレッド制御: 開始、停止、再起動

スレッドの開始は、Thread クラスのインスタンスを作成するだけで簡単です。 start() メソッドを呼び出します。その後、スレッドは run() メソッド内のコードを実行します。

ただし、スレッドの停止はそれほど簡単ではありません。スレッドが開始されると、それを直接停止する方法はありません。代わりに、スレッドに実行を停止する必要があることを通知する手法を使用できます。

一般的なアプローチの 1 つは、ブール値フラグを使用して、スレッドが実行を継続するかどうかを示すことです。スレッドの run() メソッド内で、フラグを定期的にチェックし、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>

スレッドの再起動

再起動スレッドとは、Thread クラスの新しいインスタンスを作成して開始することを意味します。これは、スレッドが停止すると再利用できないためです。ただし、元のスレッドによって維持されているデータや状態は新しいスレッドには転送されないことに注意することが重要です。

オプション 1: 新しいスレッドを作成する

<code class="java">Thread taskThread = new Thread(new Task());
taskThread.start();

// Later, to restart the thread...
taskThread = new Thread(new Task());
taskThread.start();</code>

オプション 2: 通知と再起動

<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>

以上がJava でスレッドを制御する方法: 開始、停止、再起動?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。