ホームページ  >  記事  >  Java  >  Javaでスレッドを停止する方法

Javaでスレッドを停止する方法

PHPz
PHPz転載
2023-05-26 19:04:041575ブラウズ

1. 割り込みを使用して通知します

while (!Thread.currentThread().isInterrupted() && more work to do) {     do more work    }

まず、Thread.currentThread().isInterrupt() によってスレッドが割り込まれているかどうかを確認し、次に、まだ処理すべき作業があるかどうかを確認します。終わり。

public class StopThread implements Runnable {
 
    @Override
    public void run() {
 
        int count = 0;
 
        while (!Thread.currentThread().isInterrupted() && count < 1000) {
 
            System.out.println("count = " + count++);
 
        }
 
    }
 
    public static void main(String[] args) throws InterruptedException {
 
        Thread thread = new Thread(new StopThread());
        thread.start();
        Thread.sleep(5);
        thread.interrupt();
    }
 
}

2. volatile を使用してフィールドをマークし、フィールドが true/false であるかどうかを判断してスレッドを終了します。

/**
 * 描述:     演示用volatile的局限:part1 看似可行
 */
public class WrongWayVolatile implements Runnable {
 
    private volatile boolean canceled = false;
 
    @Override
    public void run() {
        int num = 0;
        try {
            while (num <= 100000 && !canceled) {
                if (num % 100 == 0) {
                    System.out.println(num + "是100的倍数。");
                }
                num++;
                Thread.sleep(1);
            }
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
 
    public static void main(String[] args) throws InterruptedException {
        WrongWayVolatile r = new WrongWayVolatile();
        Thread thread = new Thread(r);
        thread.start();
        Thread.sleep(5000);
        r.canceled = true;
    }
}

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

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。