定时执行(一秒后执行)
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);
}
}
}