ScheduledExecutorService是一个可以用来定期执行线程任务的线程池,主要功能体现在,周期性执行线程任务和延迟时间来执行线程任务。主要特性体现在下面要讲解的四个方法中
方法一,延迟执行任务,不获取返回值
ScheduledExecutorService service = Executors.newScheduledThreadPool(8); service.schedule(()-> System.out.println("五秒后输出"),5, TimeUnit.SECONDS);
方法二,延迟执行任务,获取返回值
ScheduledExecutorService service = Executors.newScheduledThreadPool(8); Callable<String> callable = () -> { TimeUnit.SECONDS.sleep(5);return "高级结果"; }; ScheduledFuture strFuture = service.schedule(callable,5,TimeUnit.SECONDS); System.out.println("十秒后输出结果"); System.out.println(strFuture.get()); service.shutdown();
方法三,延迟执行任务,并固定利率性周期性执行任务。
service.scheduleAtFixedRate(()-> { nums++; if (nums==3){ try { TimeUnit.SECONDS.sleep(3); } catch (InterruptedException e) { e.printStackTrace(); } } if (nums==5){ service.shutdown(); } System.out.println(printTime()+":周期性执行"); },2,2,TimeUnit.SECONDS);
方法四,延迟执行任务,并固定延迟周期性执行任务。
service.scheduleWithFixedDelay(()-> { nums++; if (nums==3){ try { TimeUnit.SECONDS.sleep(3); } catch (InterruptedException e) { e.printStackTrace(); } } if (nums==5){ service.shutdown(); } System.out.println(printTime()+":周期性执行"); },2,2,TimeUnit.SECONDS);