使用java.util.Timer类

package haiyang.yu.timer;

import java.util.Date;

import java.util.Timer;

import java.util.TimerTask;

/**

* Created on 2018-04-20 13:09

*

Title: haiyang.yu.timer

*

Description:

*

* @author yuhaiyang

* @version 1.0

*/

public class TimedTask {

private static void useTimerImplTimedTask(){

// 第一个参数是任务,第二个参数为首次执行的延时时间,第三个参数为定时执行的间隔时间,时间单位是毫秒

new Timer().scheduleAtFixedRate(new TimerTask() {

@Override

public void run() {

System.out.println("Local Time is " + new Date().toString());

}

},0L,1000L);

}

public static void main(String[] args) {

useTimerImplTimedTask();

}

}

使用java.util.concurrent.ScheduledExecutorService

package haiyang.yu.timer;

import java.util.Date;

import java.util.concurrent.Executors;

import java.util.concurrent.ScheduledExecutorService;

import java.util.concurrent.TimeUnit;

/**

* Created on 2018-04-20 13:09

*

Title: haiyang.yu.timer

*

Description:

*

* @author yuhaiyang

* @version 1.0

*/

public class TimedTask {

private static void userScheduledExecutorServiceImplTiemdTask(){

Runnable runnable = new Runnable() {

@Override

public void run() {

System.out.println("Local Time is " + new Date().toString());

}

};

ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();

// 第一个参数是任务,第二个参数为首次执行的延时时间,第三个参数为定时执行的间隔时间,第四个参数是时间单位

service.scheduleAtFixedRate(runnable, 0L, 1L, TimeUnit.SECONDS);

}

public static void main(String[] args) {

userScheduledExecutorServiceImplTiemdTask();

}

}

不建议使用这种方案,最好是自己去创建线程池。可以参考下面的实现方案。

使用java.util.concurrent.ScheduledThreadPoolExecutor结合org.apache.commons.lang3.concurrent.BasicThreadFactory(推荐使用)

package haiyang.yu.timer;

import org.apache.commons.lang3.concurrent.BasicThreadFactory;

import java.util.Date;

import java.util.concurrent.ScheduledThreadPoolExecutor;

import java.util.concurrent.TimeUnit;

/**

* Created on 2018-04-20 13:09

*

Title: haiyang.yu.timer

*

使用这种方案,需要引入common-lang3的jar包

org.apache.commons

commons-lang3

3.6

*

*

* @author yuhaiyang

* @version 1.0

*/

public class TimedTask {

private static void useScheduledThreadPoolExecutorImplTimedTask(){

ScheduledThreadPoolExecutor scheduledThreadPoolExecutor = new ScheduledThreadPoolExecutor(

1, new BasicThreadFactory.Builder().namingPattern("schedule-pool-%d").daemon(false).build());

// 第一个参数是任务,第二个参数为首次执行的延时时间,第三个参数为定时执行的间隔时间,第四个参数是时间单位

scheduledThreadPoolExecutor.scheduleAtFixedRate(new Runnable() {

@Override

public void run() {

System.out.println("Local Time is " + new Date().toString());

}

}, 0L, 1L, TimeUnit.SECONDS);

}

public static void main(String[] args) {

useScheduledThreadPoolExecutorImplTimedTask();

}

}

使用java.lang.Thread

package haiyang.yu.timer;

import java.util.Date;

/**

* Created on 2018-04-20 13:09

*

Title: haiyang.yu.timer

*

Description:

*

* @author yuhaiyang

* @version 1.0

*/

public class TimedTask {

private static void useThreadImplTimedTask(){

Runnable runnable = new Runnable() {

@Override

public void run() {

while (true) {

System.out.println("Local Time is " + new Date().toString());

try {

//时间间隔,单位是毫秒

Thread.sleep(1000L);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

};

Thread thread = new Thread(runnable);

thread.start();

}

public static void main(String[] args) {

useThreadImplTimedTask();

}

}

这种方式使用的最多,但也是最lower的。

java 计划任务_Java实现定时任务的几种方案相关推荐

  1. java实现 定时_Java实现定时任务的几种方案重构

    聊聊定时任务 定时任务,顾名思义就是,定时去完成某项任务,例如指定某个时间点去做某件事情或者是指定一定的时间间隔去做某些事情.使用定时任务就是一种对生产力的解放,如果没有定时任务的话,对于以上的需求, ...

  2. java word插件开发_java生成word的几种方案

    1. Jacob是Java-COM Bridge的缩写,它在Java与微软的COM组件之间构建一座桥梁.使用Jacob自带的DLL动态链接库,并通过JNI的方式实现了在Java平台上对COM程序的调用 ...

  3. c语言 linux系统 delay,Linux下实现秒级定时任务的两种方案

    Linux下实现秒级定时任务的两种方案(Crontab 每秒运行): 第一种方案,当然是写一个后台运行的脚本一直循环,然后每次循环sleep一段时间. while true ;do command s ...

  4. Python 实现定时任务的八种方案,定时发微信

    import datetime import timedef time_printer():now = datetime.datetime.now()ts = now.strftime("% ...

  5. java method 创建_java中创建对象的5种方式

    作为Java开发者,我们每天创建很多对象,但我们通常使用依赖管理系统,比如Spring去创建对象.然而这里有很多创建对象的方法. Java中有5种创建对象的方法,下面列出例子还有他们的字节码: 使用n ...

  6. java定义数组_java中数组的三种定义方式_java中数组的定义及使用方法(推荐)...

    java中数组的三种定义方式 java中,数组是一种很常用的工具,今天我们来说说数组怎么定义 [java] view plain copy /** * 数组的三种定义方法 * 1.数组类型[] 数组名 ...

  7. java xml 方法_Java读取xml的四种方式

    Java读取xml的四种方式 在平时工作中,难免会遇到把 XML 作为数据存储格式.面对目前种类繁多的解决方案,哪个最适合我们呢?在这篇文章中,我对这四种主流方案做一个不完全评测,仅仅针对遍历 XML ...

  8. java se 定时任务_Java实现定时任务的三种方法

    一.Quartz的特点 按作业类的继承方式来分,主要有以下两种: 作业类继承org.springframework.scheduling.quartz.QuartzJobBean类的方式作业类不继承o ...

  9. java实现自动任务_Java实现定时任务的三种方法

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

  10. java 线程 定时器_java 多线程定时任务

    一.概述 New Thread的弊端如下: a.每次New Thread新建对象性能差. b.线程缺乏统一的管理,可能无限制的新建线程,相互之间竞争,极可能占用过多的系统资源导致死机 或者 OOM. ...

最新文章

  1. scala 定义空的list_18.scala的型变
  2. JavaScript——易班优课YOOC课群在线测试自动答题解决方案(十一)恢复右键、选择和复制
  3. Mac 下变更pip源
  4. 自动刷新_AutoRefresh插件:开启页面自动刷新!
  5. HTML5 address元素
  6. ionic4 ios打开appstore 跳转第三方app
  7. 两场直播丨易鲸捷分布式数据库的并发控制 、PostgreSQL日常工作分享
  8. 微型计算机中的西文字符编码,在微型计算机中,应用最普遍的西文字符编码是什...
  9. itchat——使用python登录网页版微信
  10. Android 计时器Chronometer 使用及源码分析,常见移动app开发框架
  11. 国际学校入学考试MAP语法测试题真题讲解
  12. matlab检验相关性显著性检验,显著性检验matlab.ppt
  13. 阿里云服务器CentOS开放特定端口
  14. 自动(智能)驾驶 | 4D雷达的数据集
  15. 求一元二次方程的根(YZOJ-1048)
  16. Umi部署pages多页面访问配置
  17. sql分组 会计分录_oracle\EBS\常用表\视图\会计分录\mtl_serial_numbers\总账
  18. 数据库实习之报表数据分析
  19. Bootstrap入门使用
  20. 语音识别相关会议期刊、资料、主页博客

热门文章

  1. 重构Webpack系列之六 ---- 配置文件
  2. 网络编程与分层协议设计:基于linux平台实现,网络编程与分层协议设计基于Linux平台实现[按需印刷]...
  3. 拔光所有头发编写的双色球系统,完整代码详解,用的全是Java基础的知识,另外,我这个里面特意留了一个BUG,谁要是能找出来,我就去他评论区下面唱征服!!
  4. 计算机主页为什么打不开怎么办,主页被限制,打不开怎么办?
  5. 【转】VirtualDOM与diff(Vue实现).MarkDown
  6. 【Zookeeper系列】Zookeeper命令操作(转)
  7. 网页端实时音视频服务架构与实践
  8. [淘宝商城首页]-图片灯箱明暗遮罩效果之jquery版
  9. Maven工程pom.xml文件秒变gradle工程的命令
  10. 强人Hibernate文档笔记(下)