JAva基礎文法(三十七)スレッドとプロセス(四)--ガードスレッド、タイマ

12856 ワード

ガードスレッドJAva言語のスレッドは2つの大きなクラスに分けられる:1つは:ユーザースレッドの1つは:デーモンスレッド(バックグラウンドスレッド)の中で代表的なのは:ゴミ回収スレッド(デーモンスレッド)である.デーモンスレッドの特徴:一般的なデーモンスレッドはデッドサイクルであり、すべてのユーザースレッドは終了すれば、デーモンスレッドは自動的に終了する.注意:メインスレッドmainメソッドはユーザスレッドである.デーモンスレッドはどこで使われていますか?毎日00:00にシステムデータが自動的にバックアップされます.これはタイマに使用する必要があり、タイマをデーモンスレッドに設定できます.ずっとそこで見ていて、00:00になるたびにバックアップしています.すべてのユーザスレッドが終了すると、デーモンスレッドは自動的に終了し、データバックアップを行う必要はない.
public class ThreadTest14 {
    public static void main(String[] args) {
        Thread t=new BakData();
        t.setName("       ");
        //       ,          
        t.setDaemon(true);
        t.start();

        //   :        
        for (int i=0;i<10;i++){
            System.out.println(Thread.currentThread().getName()+"--->"+i);
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

class BakData extends Thread{
    public  void run(){
        int i=0;
        //      ,          ,       ,        。
        while (true){
            System.out.println(Thread.currentThread().getName()+"--->"+(++i));
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }

    }
}

タイマータイマーの役割:特定の時間を隔てて、特定のプログラムを実行する.実際の開発では、特定のプログラムをどのくらいおきに実行するかというニーズが一般的ですが、javaではsleepメソッドを使用して、睡眠をとり、睡眠時間を設定し、この時点で目が覚めるたびに、タスクを実行することができます.この方式は最も原始的なタイマーです.Javaのクラスライブラリには、javaというタイマが書かれています.util.ティマー、直接持ってきてもいいです.しかし、この方法は現在の開発でもあまり使われていません.現在、多くの高度なフレームワークがタイミングタスクをサポートしているからです.実際の開発では,現在Springフレームで提供されているSpringTaskフレームが多く用いられているが,このフレームは簡単な構成であればタイマのタスクを遂行できる.
package thread;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

/*
           
 */
public class TimerTest {
    public static void main(String[] args) throws Exception {
        //       
        Timer timer = new Timer();
        //Timer timer = new Timer(true);//       
        //      
        //timer.schedule(    ,       ,        );
        SimpleDateFormat sdf = new SimpleDateFormat( "yyy-MM-dd HH:mm:ss");
        Date firstTime = sdf.parse( "2020-05-20 15:43:00");
        timer.schedule(new LogTimerTask(),firstTime,1000*10);


    }
}

//          
//               
class LogTimerTask extends TimerTask {

    @Override
    public void run() {
        //             。
        SimpleDateFormat sdf = new SimpleDateFormat("yyy-M-dd HH:mm:ss");
        String strTime = sdf.format(new Date());//      
        System.out.println(strTime + ":           ! ");
    }

}