qq238472837
2017-12-18 08:45scheduleAtFixedRate方法执行问题
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条回答
为你推荐
- 安卓AlarmManager定时发送位置,应用退到后台就不执行了
- android
- 2个回答
- 关于scheduleAtFixedRate
- java
- 1个回答
- 请大神解答一下关于netty客户端定时发送消息给服务端
- java
- java-ee
- 2个回答
- Java 内存泄漏问题
- 内存泄露
- 0个回答
- 关于java中使用timer进行线程调度
- it技术
- 互联网问答
- IT行业问题
- 计算机技术
- 编程语言问答
- 0个回答
换一换