java定时器
定时执行(一秒后执行)
import java.util.Timer;
import java.util.TimerTask;
/**
* 定时器
*/
public class Main3 {
public static void main(String args[]) {
new Timer().schedule(new TimerTask() {
@Override
public void run() {
System.out.println("执行");
}
},1000);
}
}
定时执行,然后隔固定时间执行(一秒后执行,然后隔三秒执行)
import java.util.Timer;
import java.util.TimerTask;
/**
* 定时器
*/
public class Main3 {
public static void main(String args[]) {
new Timer().schedule(new TimerTask() {
@Override
public void run() {
System.out.println("执行");
}
},1000,3000);
}
}
定时器案例:
package com.dzqc.model.common.util;
import java.util.HashMap;
import java.util.Map;
import java.util.Timer;
import java.util.TimerTask;
import java.util.UUID;
/**
** 定时任务管理器
* @author Administrator
*
*/
public class TaskManager {
private static TaskManager taskManager = null;
private Timer timer = new Timer("homePageTimer");
/**
**单例模式
*/
private TaskManager(){}
public static TaskManager getInstance(){
if(taskManager == null){
taskManager = new TaskManager();
}
return taskManager;
}
/**
**储存定时任务map
*/
private static final Map<String,TimerTask> map=new HashMap<String,TimerTask>();
/**
* *是否包含该id的任务
* @return
*/
public boolean haveMe(String key) {
return map.containsKey(key);
}
/**
* *关闭定时任务
* @param taskId
* @return
*/
public boolean closeTimer(String taskId) {
if(!map.containsKey(taskId)) {
return false;
}else {
TimerTask task=map.get(taskId);
task.cancel();
map.remove(taskId);
return true;
}
}
/**
* *启动定时任务
* @param task 任务实例
* @param time 时间
*/
public String startTimerTask(TimerTask task,Long time){
String taskId=UUID.randomUUID().toString();
if(!map.containsKey(taskId)) {
timer.schedule(task, time);
map.put(taskId,task);
return taskId;
}else {
return null;
}
}
}
package com.dzqc.model.common.controller;
import java.util.TimerTask;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.dzqc.model.common.util.MyAjaxResult;
import com.dzqc.model.common.util.TaskManager;
@Controller
@RequestMapping("/test")
public class TestController {
private static final Logger l=Logger.getLogger(TestController.class);
//模拟保存id
private String id;
@RequestMapping("/test")
@ResponseBody
public MyAjaxResult test() {
TaskManager t= TaskManager.getInstance();
String taskId=t.startTimerTask(new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
l.info("任务执行");
//数据库获取定时器id从map中清除任务
t.closeTimer(id);
l.info(t.haveMe(id));
}
},10000L);//十秒后执行任务
//保存taskid
id=taskId;
return MyAjaxResult.success(taskId);
}
@RequestMapping("/close")
@ResponseBody
public MyAjaxResult test(String taskId) {
if(taskId==null||"".equals(taskId)) {
return MyAjaxResult.fail_300("taskId is null!");
}
TaskManager t= TaskManager.getInstance();
boolean b=t.closeTimer(taskId);
if(b) {
l.info("关闭定时任务");
l.info(t.haveMe(id));
return MyAjaxResult.success("关闭定时任务成功");
}else {
return MyAjaxResult.fail_300("没有该id的定时任务实例:"+taskId);
}
}
}
评论区
请写下您的评论...
猜你喜欢
框架
6722
javaspringboot动态添加或移除定时器(定时任务)工具类importjava.lang.reflect.Field;importjava.lang.reflect.Method
blog
springmvc配置定时器
spring/springmvc
2475
"/club.jiajiajia.weblog.util是定时器类所在包路径定时器类@ComponentpublicclassIndexerTask{ publicIndexerTask(){ System.out.pr
c++
1147
两种方案1.打包的时候指定配置文件,例如cleaninstall-Ptest2.启动的时候指定配置文件,例如java-jar-Dspring.profiles.active=testdemo-0.0.1-SNAPSHOT.jar
official
856
两种方案1.打包的时候指定配置文件,例如cleaninstall-Ptest2.启动的时候指定配置文件,例如java-jar-Dspring.profiles.active=testdemo-0.0.1-SNAPSHOT.jar
java 数据库
2609
java项目-数据库之间定时进行数据交换服务(右上方下载)压缩包内附sql脚本,本项目为springboot+mybatis框架,导入项目即可启动测试。目的,实现两个数据库定时自动进行数据同步,定时
blog
java类加载器理解
java虚拟机(jvm)
5368
类加载器Java类加载器(英语:JavaClassloader)是Java运行时环境(JavaRuntimeEnvironment)的一部分,负责动态加载Java类到Java虚拟机的内存空间中。类通
blog
java的时间类
java基础
1488
该Calendar所代表的时间却不会被立即更改,知道下次调用get(),getTime(),getTimeMillis(),add()或roll()时才会重新计算日历的时间。这被称为set()方法的延迟
weblog
1264
linux系统vivim编辑器查找指定内容(关键字)在命令行模式下按'/'键,然后输入你要查找的关键字,回车即可此时你可以按n键向下查找,或按N键向上查找
最新发表
归档
2018-11
12
2018-12
33
2019-01
28
2019-02
28
2019-03
32
2019-04
27
2019-05
33
2019-06
6
2019-07
12
2019-08
12
2019-09
21
2019-10
8
2019-11
15
2019-12
25
2020-01
9
2020-02
5
2020-03
16
2020-04
4
2020-06
1
2020-07
7
2020-08
13
2020-09
9
2020-10
5
2020-12
3
2021-01
1
2021-02
5
2021-03
7
2021-04
4
2021-05
4
2021-06
1
2021-07
7
2021-08
2
2021-09
8
2021-10
9
2021-11
16
2021-12
14
2022-01
7
2022-05
1
2022-08
3
2022-09
2
2022-10
2
2022-12
5
2023-01
3
2023-02
1
2023-03
4
2023-04
2
2023-06
3
2023-07
4
2023-08
1
2023-10
1
2024-02
1
2024-03
1
2024-04
1
2024-08
1
标签
算法基础
linux
前端
c++
数据结构
框架
数据库
计算机基础
储备知识
java基础
ASM
其他
深入理解java虚拟机
nginx
git
消息中间件
搜索
maven
redis
docker
dubbo
vue
导入导出
软件使用
idea插件
协议
无聊的知识
jenkins
springboot
mqtt协议
keepalived
minio
mysql
ensp
网络基础
xxl-job
rabbitmq
haproxy
srs
音视频
webrtc
javascript
加密算法
目录
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。