6.21Java多线程并发高级主题_定时调度问题

6.21Java多线程并发高级主题_定时调度问题

Java多线程任务定时调度类和方法

Timer类
  • Timer:类似闹钟的功能,本身实现的就是一个线程

TimerTask类
  • TimerTask:一个抽象类,实现了Runnable接口,具备多线程能力

Timer类说明

  • 供将来在后台线程中执行的功能。 任务可以安排一次执行,或定期重复执行。

构造方法:

Constructor描述
Timer() 创建一个新的计时器
Timer(boolean isDaemon) 创建一个新的定时器,其相关线程可以指定为run as a daemon
Timer(String name) 创建一个新的定时器,其相关线程具有指定的名称
Timer(String name, boolean isDaemon) 创建一个新的定时器,其相关线程具有指定的名称,可以指定为run as a daemon

重点方法:

方法返回类型方法名称方法描述
void schedule(计划)(TimerTask task(什么任务?), long delay(多少时间、毫秒以后执行任务)) 在指定的延迟之后安排指定的任务执行
void schedule(TimeTask task, long delay, long period(隔多久时间执行的意思)) 在指定的延迟之后开始,重新执行固定延迟执行的指定任务
void schedule(TimerTask task, Date Time) 在指定的时间安排执行一次任务
void schedule(TimerTask task, Date firstTime, , long period) 从指定的时间开始,对指定的任务执行重复的固定延迟执行(执行多次任务---注意和上面多久执行一次进行区分)

TimerTask类说明

  • 可以由计时器进行一次性或重复执行的任务。

实例
package iostudy.others;

import java.util.*;

/**
* 任务定时调度,借助Timer类和TimerTask类
* @since JDK 1.8
* @date 2021/6/21
* @author Lucifer
*/
public class TimerTestNo1 {
   public static void main(String[] args) {

       /*创建Timer类对象*/
       Timer timer = new Timer();

       /*调用该类下的构造方法*/
//       timer.schedule(new MyTask(), 10000);
//       timer.schedule(new MyTask(), 1000, 200);
       Calendar calendar = new GregorianCalendar(2021, 6, 21, 19, 30, 00);
       timer.schedule(new MyTask(), calendar.getTime(), 200);
  }
}

/**
* 任务类、工作类。多线程
*/
class  MyTask extends TimerTask{

   /*重写run方法*/
   @Override
   public void run(){

       /*循环打印*/
       for (int i=0; i<10; i++){
           System.out.println("Have a rest!!!");
      }
       System.out.println("-----end-----");
  }
}

 

It's a lonely road!!!
原文地址:https://www.cnblogs.com/JunkingBoy/p/14915375.html