守護執行緒及定時器
阿新 • • 發佈:2020-12-10
守護執行緒(後臺執行緒)
- 在java語言中執行緒分為ldalei
- 使用者執行緒和守護執行緒(後臺執行緒)其中守護執行緒代表有垃圾回收執行緒
- 守護執行緒的特點
- 一般守護執行緒是一個死迴圈,所有的使用者執行緒結束,守護執行緒就結束(main方法也是一個使用者執行緒)
*守護執行緒的用處 - 假設每天00:00時候系統資料自動備份
- 這個時候就需要設定定時器,並且可以將定時器設定為守護執行緒
定時器 - 定時器的作用是間隔特定的時間,執行特定的程式
- 在Java的類庫中已經寫好了一個定時器:java.utll.Timer
定時器的寫法
public class TimerTest {
public static void main(String[] args) throws ParseException {
//建立定時器
Timer timer =new Timer();
//守護執行緒的方式
//Timer timer1 =new Timer(true);
//定時任務,多久執行一次
SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date fistTime = sdf.parse("2020-12-09 15:50:30");
timer.schedule(new LogTimerTask(),fistTime,1000*10);
}
}
//定時任務類
class LogTimerTask extends TimerTask{
public void run() {
//需要執行的任務
SimpleDateFormat sdf =new SimpleDateFormat();
String strTime = sdf.format( new Date());
System. out.println(strTime + "成功備份一次資料");
}
}
守護執行緒的寫法
public class ThreadTese06 {
public static void main(String[] args) {
Thread t =new BakDataThread();
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 BakDataThread extends Thread{
@Override
public void run() {
int i=0;
while (true){
System.out.println();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}