[转]Java实现定时任务的三种方法
一、使用Thread+sleep的方式
/** * 普通thread * 这是最常见的,创建一个thread,然后让它在while循环里一直运行着, * 通过sleep方法来达到定时任务的效果。这样可以快速简单的实现,代码如下: * @author GT * */
public class Task1 { public static void main(String[] args) { // run in a second final long timeInterval = 1000; Runnable runnable = new Runnable() { public void run() { while (true) { // ------- code for task to run System.out.println("Hello !!"); // ------- ends here try { Thread.sleep(timeInterval); } catch (InterruptedException e) { e.printStackTrace(); } } } }; Thread thread = new Thread(runnable); thread.start(); }
}
二、使用TimerTask
import java.util.Timer;
import java.util.TimerTask; /** * * 于第一种方式相比,优势 1>当启动和去取消任务时可以控制 2>第一次执行任务时可以指定你想要的delay时间 * * 在实现时,Timer类可以调度任务,TimerTask则是通过在run()方法里实现具体任务。 Timer实例可以调度多任务,它是线程安全的。 * 当Timer的构造器被调用时,它创建了一个线程,这个线程可以用来调度任务。 下面是代码: * * @author GT * */
public class Task2 { public static void main(String[] args) { TimerTask task = new TimerTask() { @Override public void run() { // task to run goes here System.out.println("Hello !!!"); } }; Timer timer = new Timer(); long delay = 0; long intevalPeriod = 1 * 1000; // schedules the task to be run in an interval timer.scheduleAtFixedRate(task, delay, intevalPeriod); } // end of main
}
三、使用ScheduledExecutorService
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit; /** * * * ScheduledExecutorService是从Java SE5的java.util.concurrent里,做为并发工具类被引进的,这是最理想的定时任务实现方式。 * 相比于上两个方法,它有以下好处: * 1>相比于Timer的单线程,它是通过线程池的方式来执行任务的 * 2>可以很灵活的去设定第一次执行任务delay时间 * 3>提供了良好的约定,以便设定执行的时间间隔 * * 下面是实现代码,我们通过ScheduledExecutorService#scheduleAtFixedRate展示这个例子,通过代码里参数的控制,首次执行加了delay时间。 * * * @author GT * */
public class Task3 { public static void main(String[] args) { Runnable runnable = new Runnable() { public void run() { // task to run goes here System.out.println("Hello !!"); } }; ScheduledExecutorService service = Executors .newSingleThreadScheduledExecutor(); // 第二个参数为首次执行的延时时间,第三个参数为定时执行的间隔时间 service.scheduleAtFixedRate(runnable, 10, 1, TimeUnit.SECONDS); }
}
原文链接
转载于:https://www.cnblogs.com/weiyinfu/p/7190906.html
[转]Java实现定时任务的三种方法相关推荐
- java解析xml的三种方法
java解析XML的三种方法 1.SAX事件解析 package com.wzh.sax;import org.xml.sax.Attributes; import org.xml.sax.SAXEx ...
- Java 创建线程的三种方法比较
在学习编程的过程中,我觉得不止要获得课本的知识,更多的是通过学习技术知识提高解决问题的能力,这样我们才能走在最前方,本文主要讲述Java 创建线程的三种方法比较, 更多Java专业知识,广州疯狂jav ...
- java 获取时间戳 的三种方法
java 获取时间戳 的三种方法,效率依次递减 方法一 : System.currentTimeMillis(); 方法二: new Date().getTime(); 方法三: Calendar.g ...
- Java 键盘输入的三种方法
Java 键盘输入的三种方法 1.System.in和System.out方法:从控制台接收一个字符,然后将其打印出来 虽然此方式实现了从键盘获取输入的字符,但是System.out.read()只能 ...
- java生成验证码的三种方法
java生成验证码的三种方法 第一种:导入jar包com.github.axet生成法 ①导包 <dependency><groupId>com.github.axet< ...
- 实现java字符串反转的三种方法
实现java字符串反转的三种方法 1.问题描述:将字符串String="abcdefg"实现反转变成 "gfedcba":用java语言实现. 2.解决方法: ...
- java se 定时任务_Java实现定时任务的三种方法
一.Quartz的特点 按作业类的继承方式来分,主要有以下两种: 作业类继承org.springframework.scheduling.quartz.QuartzJobBean类的方式作业类不继承o ...
- Java创建线程的三种方法
这里不会贴代码,只是将创建线程的三种方法做个笼统的介绍,再根据源码添加上自己的分析. 通过三种方法可以创建java线程: 1.继承Thread类. 2.实现Runnable接口. 3.实现Callab ...
- Java字符串分割的三种方法
一.StringTokenizer方法 Java中substring方法可以分解字符串,返回的是原字符串的一个子字符串.如果要讲一个字符串分解为一个一个的单词或者标记,StringTokeniz ...
最新文章
- 【题解】P3052 [USACO12MAR]摩天大楼里的奶牛Cows in a Skyscraper
- java服务端的 极光推送
- 关于地理信息系统(GIS)的几个问题
- 陈艳青(为奥运冠军名字作诗)
- 为什么java jvm.dll_Windows下java、javaw、javaws以及jvm.dll等进程的区别
- windows--bat--删除当前脚本del %0
- python月球地球质量计算_我们如何计算一个行星的质量?
- 通过Windows Live Writer发布日志到各大博客
- 我的世界php motd,ColorMOTD 彩色字体插件 | 我的世界 | MC世界侠
- PCS2021:VVC基于神经网络改进SAO
- EasyDarwin —— windows搭建rtsp服务,使用FFmpeg进行rtsp推拉流
- 解决CAS 4.2.7 版本集群部署的各种问题
- [转]Windows10 中文版 英文语言包安装失败解决
- python把工作簿拆分为工作表_使用Python和Pandas将Excel工作表拆分为单独的工作表...
- Python自动化运维之1、Python入门
- [HDU 5956] The Elder (斜率DP + 可持久化单调队列)
- prometheus-预警-6
- 笔记本扩展显示器,微信界面显示字体模糊如何解决?
- 步进电机控制系统设计
- 计算机褐色,脂肪也有“好坏”之分?看颜(yán)值(sè),看分布
热门文章
- 快速校对所有文件的md5值
- 控制台之console
- Python 的PIL,可以解决ImportError The _imagingft C module is not installed
- EntityFramework中的DbContext使用疑点说明
- 《A Tour of PostgreSQL Internals》学习笔记——进程间通信
- Xcode升级后插件失效
- asp.net mvc源码分析-Action篇 Action的执行
- KVO(NSKeyValueObserving)、KVC(NSKeyValueCoding)作用浅谈
- Div Vertical Menu ver2
- [转载]Linux Shell 的快捷键