java实现定时任务的三种方法
- /**
- * 普通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();
- }
- }
- 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
- }
- 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);
- }
- }
java实现定时任务的三种方法的更多相关文章
- java实现定时任务的三种方法 - 转载
java实现定时任务的三种方法 /** * 普通thread * 这是最常见的,创建一个thread,然后让它在while循环里一直运行着, * 通过sleep方法来达到定时任务的效果.这样可以快速简 ...
- [转]Java实现定时任务的三种方法
在应用里经常都有用到在后台跑定时任务的需求.举个例子,比如需要在服务后台跑一个定时任务来进行非实时计算,清除临时数据.文件等.在本文里,我会给大家介绍3种不同的实现方法: 普通thread实现 Tim ...
- Java实现定时任务的三种方法(转)
在应用里经常都有用到在后台跑定时任务的需求.举个例子,比如需要在服务后台跑一个定时任务来进行非实时计算,清除临时数据.文件等.在本文里,我会给大家介绍3种不同的实现方法: 普通thread实现 Tim ...
- java解析xml的三种方法
java解析XML的三种方法 1.SAX事件解析 package com.wzh.sax; import org.xml.sax.Attributes; import org.xml.sax.SAXE ...
- (转)Java结束线程的三种方法
背景:面试过程中问到结束线程的方法和线程池shutdown shutdownnow区别以及底层的实现,当时答的并不好. Java结束线程的三种方法 线程属于一次性消耗品,在执行完run()方法之后线程 ...
- JAVA写JSON的三种方法,java对象转json数据
JAVA写JSON的三种方法,java对象转json数据 转自:http://www.xdx97.com/#/single?bid=5afe2ff9-8cd1-67cf-e7bc-437b74c07a ...
- Java结束线程的三种方法(爱奇艺面试)
线程属于一次性消耗品,在执行完run()方法之后线程便会正常结束了,线程结束后便会销毁,不能再次start,只能重新建立新的线程对象,但有时run()方法是永远不会结束的.例如在程序中使用线程进行So ...
- Java实现定时任务的三种简单方法
第一种方法: /** * 先定义一个任务每天执行的时间点,再写一个死循环,不断地拿当前时间和事先定义的时间去比对,若到时间则执行任务 */ @Test public void test1() { St ...
- java 获取随机数的三种方法
方法1(数据类型)(最小值+Math.random()*(最大值-最小值+1))例:(int)(1+Math.random()*(10-1+1))从1到10的int型随数 方法2获得随机数for (i ...
随机推荐
- android sdk 更新那些文件
上篇经验,完成了android开发环境的搭建,相信大家也下载了那1.52G,已经下载好了的Adt_bundle. 那么,我们来点击SDK Manager.exe,看看有些什么吧 2 如图所示,为整个目 ...
- CENTOS修改主机名
1.临时修改主机名 显示主机名: zhouhh@zzhh64:~$ hostname zhh64 修改主机名: zhouhh@zzhh64:~$ sudo hostname zzofs zhouhh@ ...
- MySQL学习笔记--基本操作
1.登录数据库 在命令行输入 "mysql -u username -p" 回车后输入密码 2.选择数据库 USE datebase name,选择要操作的数据库 3.显示所有数据 ...
- 忘记了MariaDB root密码的解决办法
1.停掉mariaDB systemctl stop mariadb.service 2.KILL掉系统里的MySQL进程: ps -ef | grep mariadb #查询进程PIDkill 进程 ...
- Java:多线程<二> 同步
由于多线程的访问出现延迟和线程的随机性,在使用多线程时往往会伴随安全性的问题,这些问题一旦出现将会是非常严重的.为了解决这种安全性问题,synchronized出现了. synchronized用法一 ...
- Linux 学会这些基本可以啦
1,Linux 内壳文件:cat /etc/issue OR /etc/redhat-release ubuntu[apt-get install -y vim] centos[yum install ...
- [vijos P1391] 想越狱的小杉
考前最后一题,竟然是第一次码SPFA,虽然这个算法早有耳闻,甚至在闻所未闻之前自己有过一个类似的想法,说白了就是广搜啊,但是敲起来还是第一次啊,而且这还不是真正意义上的SPFA. 完全按照自己想法来码 ...
- Python 初级项目:远程操控电脑(三)-极客学院
http://www.jikexueyuan.com/course/2376_1.html
- [计算机、网络相关历史]unix简史
本文2001年由台湾“网络农夫”所写,其人生平不祥,此文受鸟哥大力推崇,两人应该相识.文章写得很不错,应该是查了很多资料整理而成的,美中不足的是好多语句不通顺,国考语文绝对不及格,哈哈. 0.我的准备 ...
- C#日志记录函数
错误日志记录在程序运行的实际维护中定位问题具有很大作用,日志越详细,反馈处理问题越方便. 常用的一个B/S架构下的日志函数. //日志记录函数 private void WriteLog( strin ...