Java 多线程编程核心技术5—定时器Timer

  1. Timer类的主要做用就是设置计划任务,但封装任务的类倒是TimerTask类,执行计划任务的代码要放入TimerTask的子类中,由于TimerTask是一个抽象类。
  2. 建立1个Timer就是启动一个新的线程,那么这个新启动的线程并非守护线程,一直在运行。
  3. 若是执行任务的时间早于当前时间,则当即执行task任务。
  4. TimerTask是以队列的方式一个一个被顺序性地执行,因此执行的时间有可能和预期的时间不一致,由于的任务有可能消耗的时间比较长,则后面的任务运行的时间也被延后。
  5. 在使用一个Timer状况下,Task是放入队列的,得一个一个运行。
  6. TimerTask类中的cancel()方法的做用是将自身从任务队列中进行清除。其余任务不受影响。
  7. Timer类中的cancel()方法做用是将任务队列中所有的任务进行清空。
  8. 所有任务都被清除,而且进程被销毁。
  9. Timer类中的cancel()方法有时并不必定会中止计划任务,而是正常执行。缘由是Timer类中的cancel()方法有时并无抢到queue锁,则让TimerTask类中的任务正常执行。
  10. 方法schedule和方法scheduleAtFixedRate都会按顺序执行,因此不要考虑非线程安全的状况,主要区别在于有没有追赶特性。
相关文章
相关标签/搜索