JAva基礎文法(三十七)スレッドとプロセス(四)--ガードスレッド、タイマ
12856 ワード
ガードスレッドJAva言語のスレッドは2つの大きなクラスに分けられる:1つは:ユーザースレッドの1つは:デーモンスレッド(バックグラウンドスレッド)の中で代表的なのは:ゴミ回収スレッド(デーモンスレッド)である.デーモンスレッドの特徴:一般的なデーモンスレッドはデッドサイクルであり、すべてのユーザースレッドは終了すれば、デーモンスレッドは自動的に終了する.注意:メインスレッドmainメソッドはユーザスレッドである.デーモンスレッドはどこで使われていますか?毎日00:00にシステムデータが自動的にバックアップされます.これはタイマに使用する必要があり、タイマをデーモンスレッドに設定できます.ずっとそこで見ていて、00:00になるたびにバックアップしています.すべてのユーザスレッドが終了すると、デーモンスレッドは自動的に終了し、データバックアップを行う必要はない.
タイマータイマーの役割:特定の時間を隔てて、特定のプログラムを実行する.実際の開発では、特定のプログラムをどのくらいおきに実行するかというニーズが一般的ですが、javaではsleepメソッドを使用して、睡眠をとり、睡眠時間を設定し、この時点で目が覚めるたびに、タスクを実行することができます.この方式は最も原始的なタイマーです.Javaのクラスライブラリには、javaというタイマが書かれています.util.ティマー、直接持ってきてもいいです.しかし、この方法は現在の開発でもあまり使われていません.現在、多くの高度なフレームワークがタイミングタスクをサポートしているからです.実際の開発では,現在Springフレームで提供されているSpringTaskフレームが多く用いられているが,このフレームは簡単な構成であればタイマのタスクを遂行できる.
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 + ": ! ");
}
}