前言

JDK 有两种定时任务的实现,一种是单线程循环判断,另一种则是线程池。

定时器

java.util 包下有 Timer 类可用来实现定时任务,下面是一个简单的例子:

Date date = new Date(new Date().getTime() + 2000L);
new Timer().schedule(new TimerTask() {
@Override
public void run() {
System.out.println("tigger");
}
}, date);

不过该类有个缺陷就是无法并发执行任务,原因是该类是串行地取出任务执行。

定时执行器

为了解决并发执行任务问题,可以使用 ScheduledExecutorService 接口的实现类。

定时执行器本质上是一个线程池,同样的其也是通过 Executors 的工厂方法来进行创建。

ScheduledExecutorService executor = Executors.newScheduledThreadPool(2);

定时执行器包含了下面三个方法,通过名字就可以知道方法的大致作用。

ScheduledFuture<?> schedule(Runnable, long, TimeUnit)
ScheduledFuture<?> scheduleAtFixedRate(Runnable, long, long, TimeUnit)
ScheduledFuture<?> scheduleWithFixedDelay(Runnable, long, long, TimeUnit)

这里不做详细的叙述,下面给个例子。

ScheduledExecutorService executor = Executors.newScheduledThreadPool(2);
executor.scheduleAtFixedRate(new Runnable {
@Override
public void run() {
System.out.println(
"delay 3 seconds, then you will this message per 2 seconds");
}
}, 3, 2, TimeUnit.SECONDS);

Java 范例 - 定时任务的更多相关文章

  1. Java基础--定时任务Timer

    Java基础--定时任务Timer 一.Timer介绍 java.util.Timer java.util.TimerTask Timer是一个定时器类,通过该类可以为指定的定时任务进行配置.Time ...

  2. Java基础--定时任务Timer(转载)

    Java基础--定时任务Timer 一.Timer介绍 java.util.Timer java.util.TimerTask Timer是一个定时器类,通过该类可以为指定的定时任务进行配置.Time ...

  3. java实现定时任务的三种方法 - 转载

    java实现定时任务的三种方法 /** * 普通thread * 这是最常见的,创建一个thread,然后让它在while循环里一直运行着, * 通过sleep方法来达到定时任务的效果.这样可以快速简 ...

  4. [转]Java实现定时任务的三种方法

    在应用里经常都有用到在后台跑定时任务的需求.举个例子,比如需要在服务后台跑一个定时任务来进行非实时计算,清除临时数据.文件等.在本文里,我会给大家介绍3种不同的实现方法: 普通thread实现 Tim ...

  5. java实现定时任务的三种方法

    /** * 普通thread * 这是最常见的,创建一个thread,然后让它在while循环里一直运行着, * 通过sleep方法来达到定时任务的效果.这样可以快速简单的实现,代码如下: * @au ...

  6. Java之定时任务详解

    在我们编程过程中如果需要执行一些简单的定时任务,无须做复杂的控制,我们可以考虑使用JDK中的Timer定时任务来实现.下面就其原理.实例以及Timer缺陷三个方面来解析java Timer定时器. 在 ...

  7. Java实现定时任务的三种方法(转)

    在应用里经常都有用到在后台跑定时任务的需求.举个例子,比如需要在服务后台跑一个定时任务来进行非实时计算,清除临时数据.文件等.在本文里,我会给大家介绍3种不同的实现方法: 普通thread实现 Tim ...

  8. Java SpringMVC 定时任务

    1.web.xml 2.spring-mvc.xml <?xml version="1.0" encoding="UTF-8"?> <bean ...

  9. java实现定时任务

    Java中实现定时任务执行某一业务.具体操作如下: 1.定义初始化任务 2.任务业务操作 3.定义初始化方法 4.在web.xml中注册启动 5.定义具体执行时间

随机推荐

  1. 项目完成 - 基于Django3.x版本 - 开发部署小结

    前言 最近因为政企部门的工作失误,导致我们的项目差点挂掉,客户意见很大,然后我们只能被动进入007加班状态,忙得嗷嗷叫,直到今天才勉强把项目改完交付,是时候写一个小结. 技术 因为前期需求不明确,数据 ...

  2. 使用 Vert.X Future/Promise 编写异步代码

    Future 和 Promise 是 Vert.X 4.0中的重要角色,贯穿了整个 Vert.X 框架.掌握 Future/Promise 的用法,是用好 Vert.X.编写高质量异步代码的基础.本文 ...

  3. Nessus如何解除IP限制以及解决重启失效的后遗症

    Nessus如何解除IP限制以及解决重启失效的后遗症 1.解除IP限制 1.获取当前plugins的版本号. https://plugins.nessus.org/v2/plugins.php 2.停 ...

  4. redis 添加hash报错

    报错信息 127.0.0.1:6379> hset ii name ss (error) MISCONF Redis is configured to save RDB snapshots, b ...

  5. Linux编译安装-软件

    编译源码的项目工具 C.C++的源码编译:使用make项目管理器 configure脚本 --> Makefile.in --> Makefile 相关开发工具: autoconf: 生成 ...

  6. 简述 private、protected、 public、 internal修饰符的访问权限

    1.private: 私有的,只能在此类中访问 2.protected: 受保护的,只能在此类及其继承类中访问 3.public: 公开的,没有访问限制 4:internal: 内部的,只能在当前程序 ...

  7. S3C2410——LED灯实验

    一.S3C2410输入/输出的原理 Linux主要有字符设备.块设备和网络设备3类驱动程序,我们一般编写的驱动都是字符设备驱动程序. 二.程序部分 编写程序控制3个LED灯,代码分为2个部分:控制LE ...

  8. selenium模块使用详解、打码平台使用、xpath使用、使用selenium爬取京东商品信息、scrapy框架介绍与安装

    今日内容概要 selenium的使用 打码平台使用 xpath使用 爬取京东商品信息 scrapy 介绍和安装 内容详细 1.selenium模块的使用 # 之前咱们学requests,可以发送htt ...

  9. wsgiref模块、web框架、django框架简介

    """web框架:将前端.数据库整合到一起的基于互联网传输的python代码 web框架也可以简单的理解为是软件开发架构里面的'服务端'""" ...

  10. 使用Spring MockMVC对controller做单元测试

    1.对单一controller做测试. import org.junit.Before; import org.junit.Test; import org.springframework.beans ...