粗大事了~~~~兄弟们,ScheduledExecutorService的scheduleAtFixedRate方法怎么会这样???????
public class TestSchedulerThreadPool {
public static void main(String[] args) {
ScheduledExecutorService executorService = Executors.newScheduledThreadPool(10);
executorService.scheduleAtFixedRate(new Cat(),1,2, TimeUnit.SECONDS);
}
}
class Cat implements Runnable{
@Override
public void run() {
System.out.println("我起来了");
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
System.out.println("shit");
}
System.out.println("我回去了");
}
}这玩意的执行结果是:
我起来了
我回去了
我起来了
我回去了
我起来了
我回去了
这个感觉肿么像是Executors.newSingleThreadScheduledExecutor()单线程执行框架的结果呢?
明明应该是每两秒起一个线程的,现在非要5秒起一个,居然要等待第一个线程结束才起下一个。
不信都考到自己电脑试一试
相关推荐
基于ScheduledExecutorService的两种方法(详解)
下面小编就为大家带来一篇基于ScheduledExecutorService的两种方法(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
ScheduledExecutorService任务定时代码示例
主要介绍了ScheduledExecutorService任务定时代码示例,具有一定借鉴价值,需要的朋友可以参考下
ScheduledExecutorService详解[源码]
本文详细介绍了Java高并发编程中ScheduledExecutorService的使用方法,包括其核心功能、构造方法以及多种调度任务的实现方式。ScheduledExecutorService是基于ExecutorService实现的延迟和周期执行任务的功能,其默认实现类为ScheduledThreadPoolExecutor。文章详细解析了schedule、scheduleAtFixedRate、scheduleWithFixedDelay等方法的使用场景和区别,并通过多个练习示例展示了如何在实际应用中操作这些方法。此外,还介绍了线程池关闭策略的设置及其影响,为开发者提供了全面的高并发任务调度解决方案。
几种定时任务(Timer、TimerTask、ScheduledFuture)的退出—结合真实案例【JAVA并发】.docx
工作中常常会有定时任务的开发需求,特别是移动端。最近笔者正好有所涉及,鉴于此,结合开发中的案例说明一下几种定时任务的 退出 。 需求说明 :定时更新正在生成的文件大小和状态【进行中、失败、完成】,如果文件生成完成,则退出【CoderBaby】 调度可以用 Timer 【调用 schedule() 或者 scheduleAtFixedRate() 方法实现】或者 ScheduledExecutorService 【结合工作中其它的需求,笔者选用此】 ScheduledExecutorService的初始化(线程池):
Java定时任务的三种实现方法
在应用里经常都有用到在后台跑定时任务的需求。举个例子,比如需要在服务后台跑一个定时任务来进行垃圾回收


