ToB企服应用市场:ToB评测及商务社交产业平台

标题: JAVA中ScheduledExecutorService的使用方法 [打印本页]

作者: 用户云卷云舒    时间: 2024-12-11 16:42
标题: JAVA中ScheduledExecutorService的使用方法
ScheduledExecutorService 简介

常用方法

schedule

schedule(Runnable command, long delay, TimeUnit unit)
  1.         ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
  2.         Runnable task = () -> System.out.println("任务在延迟后执行");
  3.         scheduler.schedule(task, 5, TimeUnit.SECONDS);
  4.         scheduler.shutdown();
复制代码

scheduleAtFixedRate

scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit)
  1.         ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
  2.         Runnable task = () -> System.out.println("周期性任务执行");
  3.         scheduler.scheduleAtFixedRate(task, 2, 3, TimeUnit.SECONDS);
  4.         try {
  5.             Thread.sleep(10000);
  6.         } catch (InterruptedException e) {
  7.             e.printStackTrace();
  8.         }
  9.         scheduler.shutdown();
复制代码

scheduleWithFixedDelay

scheduleWithFixedDelay(Runnable command, long initialDelay, long delay, TimeUnit unit)
  1.         ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
  2.         Runnable task = () -> {
  3.             System.out.println("任务开始执行");
  4.             try {
  5.                 Thread.sleep(2000);  // 模拟任务执行时间
  6.             } catch (InterruptedException e) {
  7.                 e.printStackTrace();
  8.             }
  9.             System.out.println("任务执行完成");
  10.         };
  11.         scheduler.scheduleWithFixedDelay(task, 2, 3, TimeUnit.SECONDS);
  12.         try {
  13.             Thread.sleep(15000);
  14.         } catch (InterruptedException e) {
  15.             e.printStackTrace();
  16.         }
  17.         scheduler.shutdown();
复制代码

关于shutdown

  1.         // 等待所有任务完成才去执行关闭  
  2.         executor.shutdown();   
  3.         // 如果需要立即关闭并尝试中断任务
  4.         executor.shutdownNow();
  5.         // 指定等待时间来等待执行完成  
  6.         executor.awaitTermination(long timeout, TimeUnit unit) // 如果在等待时间内执行器成功关闭,该方法将返回true;否则返回false
复制代码

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4