定时任务的开启与关闭,为什么关闭不了定时器 ?????急

jimmypert 2013-05-16 03:47:58
任务类


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;

}
...全文
1084 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
jimmypert 2013-05-18
  • 打赏
  • 举报
回复
引用 5 楼 h70614959 的回复:
直接调用task.cancelled().来关闭
????
MiceRice 2013-05-17
  • 打赏
  • 举报
回复
引用 2 楼 u010054560 的回复:
操作的不是同一定时器 有什么办法么??
显然应该先保证能所操作的是同一个定时器,我指的是你所希望停止的定时器,跟你之前所启动的定时器,必须是同一个。 你的程序企图使用多个定时器,这个并不是关键问题。
jimmypert 2013-05-17
  • 打赏
  • 举报
回复
引用 6 楼 h70614959 的回复:
timer.cancel();取消定时任务。不会立刻终止任务。而是终止下次的任务发起。已经开始的任务会继续执行,直到执行完毕。
不行 还是停不下来 可以给个 小例子不
chkaka 2013-05-17
  • 打赏
  • 举报
回复
timer.cancel();取消定时任务。不会立刻终止任务。而是终止下次的任务发起。已经开始的任务会继续执行,直到执行完毕。
chkaka 2013-05-17
  • 打赏
  • 举报
回复
直接调用task.cancelled().来关闭
jimmypert 2013-05-17
  • 打赏
  • 举报
回复
引用 3 楼 ldh911 的回复:
[quote=引用 2 楼 u010054560 的回复:] 操作的不是同一定时器 有什么办法么??
显然应该先保证能所操作的是同一个定时器,我指的是你所希望停止的定时器,跟你之前所启动的定时器,必须是同一个。 你的程序企图使用多个定时器,这个并不是关键问题。[/quote] 兄弟 你有什么办法帮我改改么 我改了 很久 还是没改好 我的想法是 :每一个任务类 就是定时器 可是就是关不了
jimmypert 2013-05-16
  • 打赏
  • 举报
回复
操作的不是同一定时器 有什么办法么??
MiceRice 2013-05-16
  • 打赏
  • 举报
回复
程序逻辑不完整,而且看起来比较奇怪; 你最好检查下是否每次你实际操作的定时器对象,都是同一个对象。
Apache DolphinScheduler是一个新一代分布式大数据工作流任务调度系统,致力于“解决大数据任务之间错综复杂的依赖关系,整个数据处理开箱即用”。它以 DAG(有向无环图) 的方式将任务连接起来,可实时监控任务的运行状态,同时支持重试、从指定节点恢复失败、暂停及 Kill任务等操作。目前已经有像IBM、腾讯、美团、360等400多家公司生产上使用。 调度系统现在市面上的调度系统那么多,比如老牌的Airflow, Oozie,Kettle,xxl-job ,Spring Batch等等, 为什么要选DolphinScheduler ? DolphinScheduler 的定位是大数据工作流调度。通过把大数据和工作流做了重点标注. 从而可以知道DolphinScheduler的定位是针对于大数据体系。DolphinScheduler 发展很快 很多公司调度都切换到了DolphinScheduler,掌握DolphinScheduler调度使用势在必行,抓住新技术机遇,为跳巢涨薪做好准备。 优秀的框架都是有大师级别的人写出来的,包含了很多设计思想和技术。DolphinScheduler也不例外,它是一个非常优秀的框架,用到很多技术和设计思想,本课程会带大家深入DolphinScheduler框架源码,包括设计的思想和技术都会讲解,DolphinScheduler源码很多,会按照模块进行讲解,学习完课程后,不仅可以熟悉DolphinScheduler使用,而且可以掌握很多优秀的设计思想和技术,给自己的技术带来很大提升,为跳巢涨薪做好准备。

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧