ThreadPoolExecutor pool3 = MyPool.getInstance()
? ? ? ? ? ? .getScheduledPool();
? ? pool3.scheduleAtFixedRate(new Runnable()
? ? {
?
? ? ? ? @Override
? ? ? ? public void run()
? ? ? ? {
? ? ? ? ? ? System.out.println("计划任务线程池中的线程");
? ? ? ? }
? ? }, 0, 1000, TimeUnit.MILLISECONDS);
}
四、计划任务执行使用
? ? 通过上面的例子,也看到了计划任务线程池的使用方式。对于计划任务,除了可以执行普不同线程池中线程的任务以外,还可以执行计划任务特殊的线程要求,比如:scheduleWithFixedDelay(command, initialDelay, delay, unit);在初始化延迟之后,以特定的延迟时间重复执行。scheduleAtFixedRate(command, initialDelay, period, unit);在初始化延迟时间之后,以固定频率重复执行。这两种的区别是下一次执行时间延迟计算的开始时间不同,第一种是从上一次任务开始执行的时候计算,第二种是从上一次任务执行结束的时候计算。这两种和java之前版本中Timer类很相似。但是Timer有很多缺陷,具体的缺陷不再详细说明。而这些缺陷都可以通过ScheduledExecutorService给完美解决。所以是时候该丢弃Timer了。