不是很确定问题出现在哪里,但是可以做如下两件事情: 1. 监控一下Queue:实际上Executors创建的是ScheduledThreadPoolExecutor这个类的对象,做强制类型转换然后调用 BlockingQueue<Runnable> getQueue() 这个方法,定时将Queue的数量输出到日志里面,看任务队列是否有变化; 2. 监控RejectException:实际上默认的线程池有个个人认为很不好的地方,就是大家都习惯于使用Executors创建线程池,所以很多人都不知道线程池实际上有时候会拒绝掉一个任务的(具体算法不说了),而默认的处理方式是直接丢弃,解决的方法是直接使用public ScheduledThreadPoolExecutor(int corePoolSize,                                      RejectedExecutionHandler handler)这个构造器,将拒绝掉的线程监控起来(比如记录到日志里面),这样就可以知道哪些任务是拒绝了的。 
以上No.1是看线程池是否还在正常工作,No.2是看是否任务有没有被正常执行(是否被抛弃了)。

解决方案 »

  1.   

    用quatuz,在spring里面配置好即可,跟linux/unix的cronjob一样配置你找这个问题的原因找1个月,换到quatuz框架上估计1周就搞定了,以后就不用管了
      

  2.   

    是quartz吧?  换成quartz是快的,不知道还会不会出现这样的状况,试试再说。
      

  3.   

    目前自学SSH中,好多问题要翻大量资料,顶一下
      

  4.   

    改用quartz一个月,目前无异常,感谢大家的回复!