解决方案 »

  1.   

    可以参考Quartz,你想要实现的功能都有,控件是开源的,楼主可以参考。
      

  2.   

    个人觉得根据业务需求来选择吧
    第一种,显然,如果业务只是偶尔运行一次,要采用此方案,经常block状态肯定比第二种,始终Runnable节约开销的。
    但推荐使用wait吧,释放锁,操作起来也方便些。
    第二种,如果业务经常性需要run,也未尝不可,优势就是控制起来很方便。而且一个线程也不是多大事吧,最多你sleep 10毫秒之类的。
      

  3.   

    如果不考虑死锁,第一种肯定好点,cpu让出来了。第二种太占用cpu了,消耗巨大。
    考虑死锁的话,你的第二种方法可以改进下,再加个时间长度变量,调用sleep()方法。比如每隔1min检查一次,如果还是暂停态则继续sleep,否则执行下面代码。这个时间可以根据业务需要动态的改变,这样可以把cpu让出来干其他的事。