ScheduledExecutorService接口
在ExecutorService的基础上,ScheduledExecutorService提供了按时间安排执行任务的功能,它提供的方法主要有:
  • schedule(task,initDelay):安排所提交的Callable或Runnable任务在initDelay指定的时间后执行。
  • scheduleAtFixedRate():安排所提交的Runnable任务按指定的间隔重复执行
  • scheduleWithFixedDelay():安排所提交的Runnable任务在每次执行完后,等待delay所指定的时间后重复执行。
    代码:ScheduleExecutorService的例子
  • import java.util.concurrent.Callable;
    import java.util.concurrent.ExecutionException;
    import java.util.concurrent.Executors;
    import java.util.concurrent.ScheduledExecutorService;
    import java.util.concurrent.ScheduledFuture;
    import java.util.concurrent.TimeUnit;

    public class ScheduledExecutorServiceTest
    {
           public static void main(String[] args) throws InterruptedException,ExecutionException
           {
                  //*1
                   ScheduledExecutorService service=Executors.newScheduledThreadPool(2);
                   //*2
                   Runnable task1=new Runnable()
                   {
                        public void run()
                        {
                           System.out.println("Taskrepeating.");
                        }
                   };
                   //*3
                   final ScheduledFuture future1=service.scheduleAtFixedRate(task1,0,1,TimeUnit.SECONDS);
                   //*4
                   ScheduledFuture future2=service.schedule(new Callable()
                {
                        public String call()
                        {
                                future1.cancel(true);
                                return "taskcancelled!";
                        }
                   },10,TimeUnit.SECONDS);
                   System.out.println(future2.get());
         //*5
         service.shutdown();
       }
    }

  • 这个例子有两个任务,第一个任务每隔一秒打印一句“Taskrepeating”,第二个任务在5秒钟后取消第一个任务。

    *1:初始化一个ScheduledExecutorService对象,这个对象的线程池大小为2。
    *2:用内函数的方式定义了一个Runnable任务。
    *3:调用所定义的ScheduledExecutorService对象来执行任务,任务每秒执行一次。能重复执行的任务一定是 Runnable类型。注意我们可以用TimeUnit来制定时间单位,这也是Java5.0里新的特征,5.0以前的记时单位是微秒,现在可精确到奈秒。
    *4:调用ScheduledExecutorService对象来执行第二个任务,第二个任务所作的就是在5秒钟后取消第一个任务。

    *5:关闭服务。

ScheduledExecutorService相关推荐

  1. scheduled线程池ScheduledExecutorService只执行一次_有个定时任务突然不执行了

    scheduled线程池ScheduledExecutorService只执行一次_有个定时任务突然不执行了 原因 If any execution of the task encounters an ...

  2. Timer的缺陷 用ScheduledExecutorService替代

    GIT: https://github.com/whtchl/JavaConcurrentTemplate 继续并发,上篇博客对于ScheduledThreadPoolExecutor没有进行介绍,说 ...

  3. JDK5.0 特性-线程任务执行架构 ScheduledExecutorService

    来自:http://www.cnblogs.com/taven/archive/2011/12/17/2291469.html 1 import java.util.concurrent.Callab ...

  4. java一段时间后执行一块代码_java自带的ScheduledExecutorService定时任务正常执行一段时间后部分任务不执行...

    目前我有用java自带的ScheduledExecutorService线程任务做定时调度功能,我开启了足够多的线程数,比如开了300,实际上用到的只有50个. 我用的是newScheduledThr ...

  5. JAVA线程池ScheduledExecutorService周期性地执行任务 与单个Thread周期性执行任务的异常处理...

    本文记录: 1,使用ScheduledExecutorService的 scheduleAtFixedRate 方法执行周期性任务的过程,讨论了在任务周期执行过程中出现了异常,会导致周期任务失败. 2 ...

  6. java time 周期性执行,详解ScheduledExecutorService的周期性执行方法

    详解 ScheduledExecutorService 的周期性执行方法 在最近的工作中,需要实现一个当一个任务执行完后,再等 100 毫秒然后再次执行的功能.当时最先反映到的就是 java 线程池的 ...

  7. scheduledexecutorservice 的使用_使用J.U.C实现定时任务

    第一种:使用Executors.newScheduledThreadPool实现定时任务 这种实现方式是阿里规范不推荐的使用方式,有资源耗尽的风险 import java.util.concurren ...

  8. java高级----Thread之ScheduledExecutorService的使用

    ScheduledExecutorService的主要作用就是可以将定时任务与线程池功能结合使用.今天我们来学习一下ScheduledExecutorService的用法.我们都太渺小了,那么容易便湮 ...

  9. 详解ScheduledExecutorService的周期性执行方法

    2019独角兽企业重金招聘Python工程师标准>>> 详解 ScheduledExecutorService 的周期性执行方法 在最近的工作中,需要实现一个当一个任务执行完后,再等 ...

最新文章

  1. Java标识符首字母可以是哪些_Java编程中你不知道的一些标识符有哪些呢?
  2. matlab中repmat的用法,Matlab: sum的用法、每一行求和、repmat的用法、sum和repmat结合使用减少循环...
  3. Makefile文件的编写规则
  4. 基本包装类和System类
  5. VMware 下安装centos7,无法进入图形化界面
  6. ubuntu adduser
  7. windows电脑借助多开软件实现ZALO程序多开
  8. 毕向东java ppt下载_毕向东Java基础ppt课件
  9. Autodesk AutoCAD 2018 for mac
  10. 计算方法(数值分析)实验:勒让德多项式求展开的三次平方逼近多项式代码实现 java
  11. 【原创】 ES5高效封装WIN10系统教程2020系列(四)使用工具优化与清理
  12. 2、如何搭建百度离线地图服务
  13. Timer源代码分析
  14. 男人最碰不得的十大危险女人
  15. PC端微信dat还原工具源码分享【福利】
  16. 基于JAVA宠物托管系统计算机毕业设计源码+系统+lw文档+部署
  17. tf.name_scope与tf.variable_scope用法区别
  18. matlab左侧显示当前文件夹,matlab还原默认布局,matlab左侧显示
  19. (转)DHTML学习笔记
  20. Linux中的log介绍(一)---概述

热门文章

  1. mate30pro 优化 开发者选项_10 个开发者必知的 MySQL 8.0 新功能
  2. lorawan的工作原理_LoRaWAN协议的工作原理是怎样的
  3. mysql 雇员表脚本,mysql压力测试脚本实例_MySQL
  4. win 二进制门安装mysql_windows安装mysql2 gem(包括windows 7 64位)
  5. matlab求解多项式系数,C++和MATLAB混合编程求解多项式系数(矩阵相除)
  6. Jam's balance HDU - 5616 (01背包基础题)
  7. 【题解】【洛谷 P1967】 货车运输
  8. win10 uwp unix timestamp 时间戳 转 DateTime
  9. 一次基于Vue.Js的用户体验优化 (vue drag)
  10. c#中将HTML文件转换成PDF文件