Discuss / Java / 在FixedRate模式下,假设每秒触发,如果某次任务执行时间超过1秒,后续任务会不会并发执行?

在FixedRate模式下,假设每秒触发,如果某次任务执行时间超过1秒,后续任务会不会并发执行?

Topic source

Loading...

#1 Created at ... [Delete] [Delete and Lock User]

一:在FixedRate模式下,假设每秒触发,如果某次任务执行时间超过1秒,后续任务会不会并发执行?大家可以测一下,其实想一下也明白,固定频率执行我管你前边有没有超时呢。

main方法

        ScheduledExecutorService ses = Executors.newScheduledThreadPool(4);
//        1秒后执行一次任务
//        ses.schedule(new Task("one time"), 3, TimeUnit.SECONDS);
        ses.scheduleAtFixedRate(new Task("fix rate"),0,3,TimeUnit.SECONDS);
//        ses.shutdown();

执行任务

class Task implements Runnable {

    private String s;


    public Task(String s) {
        this.s = s;
    }

    @Override
    public void run() {
        try {
            new Timer().schedule(new TimerTask() {
                @Override
                public void run() {
                    System.out.println("delay 5s");
                }
            },10000);
//            System.out.println("task " + s);
//            Thread.sleep(3000);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }

    }
}

二:任务抛出了异常,后续任务不会继续执行


  • 1

Reply