如何才能做到,定时启动某一个任务,比如三分钟做一次该任务,目前我用的是spring结合quartz实现了该功能但是,我执行的那个任务的是多线程的,这样会导致什么问题呢,当三分钟到了会自动启动下一个任务,或许你会说concurrent可以控制,可是你错了,前几天我也这么天真的以为是,但是事实不是这样的。我想达到的目的是,下一个任务的启动要看前面那个任务是否结束,而不会三分钟就起来一次,现在碰到的问题是当这个任务不是多线程时,是的会等待前面那个任务执行完毕,然后再起来,可是现在我想用多线程来实现这个任务,这条路还能走通吗?或者是不是应该换其他的一种方法呢?各位高手能不能给一点解决思路啊。

解决方案 »

  1.   

    concurrent真的不行么?你的concurrent是怎么用的?试试java.util.concurrent.Semaphore
      

  2.   

    quartz可以设置线程数量,设置成单线程就行了(不过我说的是单独用quartz,整合的不知道有没有)
      

  3.   

    设置一个静态变量,在一个任务开始时改变它为false,当结束时设为true,然后在另个线程里判断这个变量,若为false则继续sleep
      

  4.   


    那个单线程是quartz的单线程,不是他要做的事变成单线程,而且quartz还有个有状态JOB,可以记录上一次执行的状态,所以不管你JOB里面是多线程还是单线程工作,quartz还是会排队执行(因为设成单线程了)