定时任务的开启与关闭,为什么关闭不了定时器 ?????急
任务类
public class ScheduleTask {
private boolean isRun=false;
private Timer timer=new Timer();
//计划
private int id;
private String nick;//计划名称
private int numbergoods;//上架优化的总数量
private String plantime;
private String cid;//优化范围
private String state;
public ScheduleTask() {
super();
}
get set.......
public static ScheduleTask getName(ScheduleTask name){
if(name == null){
name = new ScheduleTask();
}else{
return name;
}
return name;
}
//---------------------------------------------------------------------------------------------//
/**
* 开启上架优化任务
*/
public void start(String nick){
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 01);
calendar.set(Calendar.MINUTE, 00);
calendar.set(Calendar.SECOND, 0);
// Date time = calendar.getTime();
if(!isRun){
isRun=true;
timer.schedule(new ScheduleJob(nick),1,4000);//在1秒后执行此任务,每次间隔2秒,如果传递一个Data参数,就可以在某个固定的时间执行这个任务.
}
}
/**
* 关闭定时器
*/
public void shut(ScheduleTask name) {
this.isRun=false;
this.timer.cancel();
name = null;
// System.gc();//name.timer.cancel();
System.out.println("关闭:"+name.getNick());
// name = null;
// System.gc();
}
class ScheduleJob extends java.util.TimerTask{
private String name;
protected final SimpleDateFormat bartDateFormat = new SimpleDateFormat("yyyy-MM-dd-EE");
@Override
public void run() {
List<ExecutionTime> taskDate=ExecutionTimeBusiness.getfind(name);
}
}
action 代码
/**
* 开启
* @throws UnsupportedEncodingException
*
*/
public String openTask() throws UnsupportedEncodingException{
HttpServletRequest request = ServletActionContext.getRequest();
String nick=URLDecoder.decode(request.getParameter("nick"),"utf-8");
String status=URLDecoder.decode(request.getParameter("status"),"utf-8");
ScheduleTaskBusiness.changeStatus(status);//修改状态
ScheduleTask task=ScheduleTaskBusiness.findTask(nick);
if(task!=null){
ScheduleTask job =ScheduleTask.getName(task);
job.start(job.getNick());
}
return null;
}
/**
* 任务关闭
* @throws UnsupportedEncodingException
*/
public String occludeTask() throws UnsupportedEncodingException{
HttpServletRequest request = ServletActionContext.getRequest();
String nick=URLDecoder.decode(request.getParameter("nick"),"utf-8");
String status=URLDecoder.decode(request.getParameter("status"),"utf-8");
ScheduleTaskBusiness.changeStatus(status);//修改状态
ScheduleTask task=ScheduleTaskBusiness.findTask(nick);
if(task!=null){
ScheduleTask job =ScheduleTask.getName(task);
job.shut(job);
}
return null;
}