qq238472837
qq238472837
2017-12-18 08:45

scheduleAtFixedRate方法执行问题

5
  • 并发
  • 线程池

刚开始学线程池的定时任务,用到了scheduleAtFixedRate方法,

 package test;

public class work implements Runnable {
    @Override
    public void run() {
        int i=0;
        while(i<10) {
            System.out.println(i++);
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}
 package test;

import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

public class errpool {

    public static void main(String[] args) {
        ScheduledExecutorService pool = new ScheduledThreadPoolExecutor(10);
        pool.scheduleAtFixedRate(new work(), 0, 5, TimeUnit.SECONDS);
    }
}

我查的教程说:
当执行任务的时间大于周期间隔时,会发生什么呢?
(1)schedule方法:下一次执行时间相对于 上一次 实际执行完成的时间点 ,因此执行时间会不断延后
(2)scheduleAtFixedRate方法:下一次执行时间相对于上一次开始的 时间点 ,因此执行时间不会延后,存在并发性
按他说的我的定时设置的5秒,但是程序执行要10秒,应该符合第二条,但是实际的运行结果如下

 0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8

并没有出现并发现象,这是为啥呢,求大神解答

  • 点赞
  • 回答
  • 收藏
  • 复制链接分享

1条回答

为你推荐

换一换