timer的cancel和scheduler的shutdown都能满足任务的。

解决方案 »

  1.   

    看看这个:http://docs.oracle.com/cd/E17802_01/j2se/j2se/1.5.0/jcp/beta1/apidiffs/java/util/concurrent/ScheduledExecutor.html
      

  2.   

    既然task都已经进去了,你在外部想停止是没什么办法了,建议你设置个标志位可以存数据库里
    第一个方式就是task进去的时候,修改标志位状态,这样其他人只要根据task的编号和标志位就能达到你说的“说明某某任务正在运行或已经停止之类的。”提示功能,你只要读数据库就好了。然后在task执行完成以后再次修改标注位状态。另外一种是在外部先修改标志位,就是强行停止,TASK进去以后先读取标志位发现不让执行了就返回,然后如果特别巧合就是判断结束以后你修改了标志位,你可以在task的结尾再次读取那个状态,如果发现是在执行过程中状态位改了,那你想办法再task结束以后将task执行的操作回滚就可以了,比如你是插入记录,那就把记录再删了。大概就是这种思路,如果你在程序上解决不了的问题,就想办法在程序设计上解决。
      

  3.   

    Spring或者Quartz里面有方法么?
      

  4.   

    实在不行,定时任务放线程里,要搞掉的时候interrupted一下