timer 任务定时器

时间:2021-11-18 23:22:59

  timer 的任务定时


 首先先介绍一下timer的一下方法
方法摘要

void cancel()

终止此计时器,丢弃所有当前已安排的任务。

int purge()

从此计时器的任务队列中移除所有已取消的任务。

void schedule(TimerTask task, Date time)

安排在指定的时间执行指定的任务。

void schedule(TimerTask task, Date firstTime, long period)

安排指定的任务在指定的时间开始进行重复的固定延迟执行。

void schedule(TimerTask task, long delay)

安排在指定延迟后执行指定的任务。

void schedule(TimerTask task, long delay, long period)

安排指定的任务从指定的延迟后开始进行重复的固定延迟执行。

void scheduleAtFixedRate(TimerTask task, Date firstTime, long period)

安排指定的任务在指定的时间开始进行重复的固定速率执行。

void scheduleAtFixedRate(TimerTask task, long delay, long period)

安排指定的任务在指定的延迟后开始进行重复的固定速率执行。


上面是就是timer的常用方法 之后介绍一下我在项目中用到的  。 例如我注册之后我想让数据三十秒后才添加到数据库
 这里是放到你需要用到timer 的地方 ,这里肯定有人问,我为什么要传dao了,在使用的时候我发现 mytask 类居然不可以注入dao层,使用只能以构造方法传过去,具体的话大家可以试一试,看看。
Timer timer = new Timer();
Date date = new Date();
// 以date为参数,指定某个时间点执行线程
timer.schedule(new MyTask(taskId,userDao,taskDao,taskSituationDao,employerDao), new Date(date.getTime() + 60000));

之后就是myTask 类了

package xyz.ibenben.parttime.common.util;

import java.util.TimerTask;


import xyz.ibenben.parttime.task.dao.TaskDao;
import xyz.ibenben.parttime.task.dao.TaskSituationDao;
import xyz.ibenben.parttime.task.entity.Task;
import xyz.ibenben.parttime.task.entity.TaskSituation;
import xyz.ibenben.parttime.user.dao.EmployerDao;
import xyz.ibenben.parttime.user.dao.UserDao;
import xyz.ibenben.parttime.user.entity.Employer;
import xyz.ibenben.parttime.user.entity.User;

public class MyTask extends TimerTask {
private int taskId;

private UserDao userDao;
private TaskSituationDao taskSituationDao;
private TaskDao taskDao;
private EmployerDao employerDao;

public MyTask(int taskId, UserDao userDao2, TaskDao taskDao2,
TaskSituationDao taskSituationDao2, EmployerDao employerDao2) {
this.taskId = taskId;
this.userDao = userDao2;
this.taskDao = taskDao2;
this.taskSituationDao = taskSituationDao2;
this.employerDao = employerDao2;
}

public void run() {
System.out.println("线程" + taskId + ":正在执行");

System.out.println("我是注册三分钟之后操作数据库");


}


}