Javaデーモンスレッドとそのアプリケーション

Javaスレッドは、ユーザースレッドとデーモンスレッドの2つのタイプに分けられます。

通常、ユーザースレッドを使用しますが、デーモンスレッドが使用されることはめったになく、特定のシナリオでのみ使用されます。デーモンスレッドは通常、他のスレッドにサービスを提供するために使用されます。たとえば、JVMのガベージコレクションは、他のスレッドのガベージオブジェクトを収集するデーモンスレッドです。

ガーディアンスレッドの特徴:ライフサイクルは他のスレッドに依存します。最後のユーザースレッドが終了すると、ガーディアンスレッドは強制的に終了します。以前はファンタジー小説を読むのが好きでしたが、小説の主従合意と非常に似ていますか?死ぬには

コード

		System.out.println("主线程运行开始");
        Thread thread = new Thread(new Runnable() {
    
    
            @Override
            public void run() {
    
    
                while (true) {
    
    
                    System.out.println("用户线程运行中");
                    try {
    
    
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
    
    
                        e.printStackTrace();
                    }
                }
            }
        });
        thread.start();
        System.out.println("主线程运行结束");

結果

主线程运行开始
主线程运行结束
用户线程运行中
用户线程运行中
用户线程运行中
用户线程运行中
用户线程运行中
用户线程运行中

上記のコードの実行結果から、メインスレッドが終了した後、ユーザースレッドがまだ実行されていると、JVMを終了できません。

コード

		System.out.println("主线程运行开始");
        Thread thread=new Thread(new Runnable() {
    
    
            @Override
            public void run() {
    
    
                while (true){
    
    
                    System.out.println("守护线程运行中");
                    try {
    
    
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
    
    
                        e.printStackTrace();
                    }
                }
            }
        });
        thread.setDaemon(true);
        thread.start();
        System.out.println("主线程运行结束");

結果

主线程运行开始
守护线程运行中
主线程运行结束

ただし、デーモンスレッドの場合、メインスレッドが終了すると、デーモンスレッドは強制的に終了します。これは、一部のバックグラウンドタスクの実行に非常に適しています。

実用的なアプリケーションシナリオ:18年ぶりに働いたとき、高齢者ケアプラットフォームの開発、マットレスのドッキング、高齢者の睡眠心拍数、血圧、睡眠状態が大画面に表示され、データ収集はリアルタイムで、データ収集はしばらくの間行われたことを覚えています。メインプログラムが終了した後、データ収集は無意味であるため、無限ループとsokectを使用してデーモンスレッドを取得します

おすすめ

転載: blog.csdn.net/qq_38306425/article/details/109159772