Java 8 每隔一段时间启动线程(scheduleAtFixedRate(task,1,2,TimeUnit.SECONDS))-ScheduleExecutorService

Java 8 每隔一段时间启动线程(scheduleAtFixedRate(task,1,2,TimeUnit.SECONDS))-ScheduleExecutorService,java-8,java.util.concurrent,Java 8,Java.util.concurrent,有这样一个示例代码 公共类执行器RunnableRun{ 公共静态void main(字符串[]args){ ScheduledExecutorService ScheduledExecutorService= 执行器。newScheduledThreadPool(4); IntStream.range(0,7).forEach( 我->{ 任务=新任务(i); scheduledExecutorService.scheduleAtFixedRate(任务,1,2,时间单位。秒); } ); s

有这样一个示例代码

公共类执行器RunnableRun{
公共静态void main(字符串[]args){
ScheduledExecutorService ScheduledExecutorService=
执行器。newScheduledThreadPool(4);
IntStream.range(0,7).forEach(
我->{
任务=新任务(i);
scheduledExecutorService.scheduleAtFixedRate(任务,1,2,时间单位。秒);
}
);
scheduledExecutorService.shutdown();
试一试{
scheduledExecutorService.等待终止(1000,时间单位:秒);
}捕捉(中断异常e){
e、 printStackTrace();
}
}
私有静态类任务实现可运行{
私有final int idThread;
私有任务(int-idThread){
this.idThread=idThread;
}
@凌驾
公开募捐{
System.out.println(Thread.currentThread().getName())+
“:在迭代中启动№ " + 这是(idThread);
}
}
我希望看到一个线程在运行时会延迟一秒钟(相对于我们为线程指定任务的时刻,但我们现在不运行,并且经过一段时间)

然后一个线程必须执行一个任务,但要持续2秒

线程必须执行任务14次,同时线程将重用线程池中的线程

是吗?

scheduleAtFixedRate(任务,1,2,时间单位。秒)
据我所知,应用程序一启动,第一个线程就不会立即启动,而是在1秒后启动,然后执行任务

同样的任务将在2秒内再次完成

然后,在下一次迭代中,重复该算法

因此,对于每个迭代,每个线程将完成任务-2次

是吗?

但是线程没有时间运行,应用程序停止

为什么?

为了了解这个机制是如何工作的,我不得不创建带有延迟的任务

IntStream.range(0,7).forEach(
我->{
试一试{
睡眠(1000);
}捕捉(中断异常e){
e、 printStackTrace();
}
任务=新任务(i);
scheduledExecutorService.scheduleAtFixedRate(任务,1,2,时间单位。秒);
}
);
那么我不认为这样的计划有什么意义

谁知道呢,解释一下这个机制。