マルチスレッドの守護スレッド


デーモン
  • スレッドは、ユーザスレッドとガードスレッド
  • に分かれている。
  • 仮想マシンは、ユーザスレッドの実行が完了したことを確認しなければならない。
  • 仮想マシンは、ガードスレッドの実行完了を待つ必要はない。
  • 例えば、バックグラウンドには操作日、監視メモリ、ゴミ回収待ちなどが記録されています。
    以下はコードで守護スレッドをデモします。
    package org.javaboy;
    
    /**
     * @Author: bai
     * @DateTime: 2020/6/7 19:06
     */
    //       
    public class TestDaemon {
        public static void main(String[] args) {
            God god = new God();
            You you = new You();
    
            Thread thread = new Thread(god);
            thread.setDaemon(true); //    false,       ,           
            thread.start(); //       
    
            new Thread(you).start();    //       
        }
    }
    
    //   
    class God implements Runnable {
        @Override
        public void run() {
            while (true) {
                System.out.println("      !");
            }
        }
    }
    
    //   
    class You implements Runnable {
        @Override
        public void run() {
            for (int i = 0; i < 36500; i++) {
                System.out.println("         !");
            }
            System.out.println("=====goodbye,world!=====");
        }
    }
    
    
    コードの説明:まずGod類を模擬するのは神で、神は守るスレッドとしてYouを見守っています。Youは楽しく生きて、自分のことをしています。主スレッドでは、thread.setDaemon(true)法によりGodを守護スレッドとして使用し、この方法はデフォルトではfalseであり、ユーザスレッドであることを示し、通常のスレッドはすべてユーザスレッドである。
    締め括りをつける
    最後に運行結果から、 ここの守護スレッドがGod類であることが分かります。