我试了一下应该是如果当前任务没有超过一秒那么从开始执行任务算1秒后执行下一个任务,
如果当前任务超过了一秒那么下一个任务会等待当前任务执行完然后立即执行下一个任务不会并发执行。
import java.util.concurrent.*; public class Main { public static void main(String[] args) { // 创建一个固定大小的线程池: ScheduledExecutorService ses = Executors.newScheduledThreadPool(4); ses.scheduleAtFixedRate(new Task(), 2, 1, TimeUnit.SECONDS); // 关闭线程池: //ses.shutdown(); } } class Task implements Runnable { public static int i=0; @Override public void run() { System.out.println("start " + Task.i++); try { Thread.sleep(3000); } catch (InterruptedException ignored) { } System.out.println("end " + Task.i++); } }
这是结果
start 0 end 1 start 2 end 3 start 4
Sign in to make a reply
早安660
我试了一下应该是如果当前任务没有超过一秒那么从开始执行任务算1秒后执行下一个任务,
如果当前任务超过了一秒那么下一个任务会等待当前任务执行完然后立即执行下一个任务不会并发执行。
这是结果