一:在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); } } }
二:任务抛出了异常,后续任务不会继续执行
Sign in to make a reply
Loading...
一:在FixedRate模式下,假设每秒触发,如果某次任务执行时间超过1秒,后续任务会不会并发执行?大家可以测一下,其实想一下也明白,固定频率执行我管你前边有没有超时呢。
main方法
执行任务
二:任务抛出了异常,后续任务不会继续执行