1、普通方式

  1. /**
  2. * 普通thread
  3. * 这是最常见的,创建一个thread,然后让它在while循环里一直运行着,
  4. * 通过sleep方法来达到定时任务的效果。这样可以快速简单的实现
  5. */
  6. public static void main(String[] args)
  7. {
  8.  
  9. //定时任务1 通过普通线程
  10. final long timeInterval = 1000;
  11. Runnable runnable = new Runnable(){
  12.  
  13. @Override
  14. public void run()
  15. {
  16. while (true)
  17. {
  18. long currentTime = System.currentTimeMillis();
  19. SimpleDateFormat formatter = new SimpleDateFormat("yyyy年-MM月dd日-HH时mm分ss秒");
  20. Date date = new Date(currentTime);
  21. System.out.println("hello,"+formatter.format(date));
  22. try
  23. {
  24. Thread.sleep(timeInterval);
  25. }
  26. catch (InterruptedException e)
  27. {
  28.  
  29. }
  30. }
  31. }
  32.  
  33. };
  34. Thread a = new Thread(runnable);
  35. a.start();
  36. }

2、Timer和TimerTask

  1. /**
  2. * 于第一种方式相比,优势 1>当启动和去取消任务时可以控制 2>第一次执行任务时可以指定你想要的delay时间
  3. * 在实现时,Timer类可以调度任务,TimerTask则是通过在run()方法里实现具体任务。 Timer实例可以调度多任务,它是线程安全的。
  4. * 当Timer的构造器被调用时,它创建了一个线程,这个线程可以用来调度任务。
  5. * 缺陷:首先Timer对调度的支持是基于绝对时间的,而不是相对时间,所以它对系统时间的改变非常敏感。其次Timer线程是不会捕获异常的,
  6. * 如果TimerTask抛出的了未检查异常则会导致Timer线程终止,同时Timer也不会重新恢复线程的执行,他会错误的认为整个Timer线程都会取消。
  7. * 同时,已经被安排单尚未执行的TimerTask也不会再执行了,新的任务也不能被调度。故如果TimerTask抛出未检查的异常,Timer将会产生无法预料的行为。
  8. * @param args
  9. */
  10. public static void main(String[] args)
  11. {
  12. TimerTask task = new TimerTask(){
  13.  
  14. @Override
  15. public void run() {
  16. long currentTime = System.currentTimeMillis();
  17. SimpleDateFormat formatter = new SimpleDateFormat("yyyy年-MM月dd日-HH时mm分ss秒");
  18. Date date = new Date(currentTime);
  19. System.out.println("hello,"+formatter.format(date));
  20. }
  21.  
  22. };
  23.  
  24. TimerTask task2 = new TimerTask(){
  25.  
  26. @Override
  27. public void run() {
  28. long currentTime = System.currentTimeMillis();
  29. SimpleDateFormat formatter = new SimpleDateFormat("yyyy年-MM月dd日-HH时mm分ss秒");
  30. Date date = new Date(currentTime);
  31. System.out.println("hello2,"+formatter.format(date));
  32. }
  33.  
  34. };
  35. Timer timer = new Timer();
  36. long delay = 0;
  37. long intevalPeriod = 1*1000;
  38. //timer.scheduleAtFixedRate(task, delay, intevalPeriod);
  39. //timer.scheduleAtFixedRate(task2, delay, intevalPeriod);
  40. SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  41. Date date;
  42. try
  43. {
  44. date = sdf.parse("2016-09-27 15:16:00");
  45. timer.schedule(task2, date, intevalPeriod);
  46. }
  47. catch (ParseException e)
  48. {
  49. e.printStackTrace();
  50. }
  51. }

3、java.util.concurrent.ScheduledExecutorService

  1. /**
  2. * ScheduledExecutorService是从Java SE5的java.util.concurrent里,做为并发工具类被引进的,这是最理想的定时任务实现方式。
  3. * 相比于上两个方法,它有以下好处:
  4. * 1>相比于Timer的单线程,它是通过线程池的方式来执行任务的
  5. * 2>可以很灵活的去设定第一次执行任务delay时间
  6. * 3>提供了良好的约定,以便设定执行的时间间隔
  7. * @param args
  8. */
  9. public static void main(String[] args)
  10. {
  11. Runnable runnable = new Runnable(){
  12.  
  13. @Override
  14. public void run() {
  15. long currentTime = System.currentTimeMillis();
  16. SimpleDateFormat formatter = new SimpleDateFormat("yyyy年-MM月dd日-HH时mm分ss秒");
  17. Date date = new Date(currentTime);
  18. System.out.println("hello2,"+formatter.format(date));
  19. }
  20.  
  21. };
  22. ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
  23. // 第二个参数为首次执行的延时时间,第三个参数为定时执行的间隔时间
  24. service.scheduleAtFixedRate(runnable,10,1,TimeUnit.SECONDS);
  25. }

4、使用调度框架:quartz

http://www.quartz-scheduler.org/

Java 任务调度的更多相关文章

  1. 推荐几种Java任务调度的实现

    几种任务调度的 Java 实现方法与比较--转载 原文:http://www.ibm.com/developerworks/cn/java/j-lo-taskschedule/ 写了一天的作业调度,这 ...

  2. Java任务调度框架之分布式调度框架XXL-Job介绍

    ​ Java任务调度框架之分布式调度框架XXL-Job介绍及快速入门 调度器使用场景: Java开发中经常会使用到定时任务:比如每月1号凌晨生成上个月的账单.比如每天凌晨1点对上一天的数据进行对账操作 ...

  3. java任务调度quartz框架的小例子

    quartz是一个开源的作业调度框架,当然,java可以使用Timer来实现简单任务调度的功能,但Timer是单线程的设计方案,使得一个任务延迟会影响到其他的任务.java也可以使用Scheduled ...

  4. Java任务调度

    最近项目要用到任务调度的相关知识,昨天信心满满的去官网学习,结果被坑个半死,我用的最新版的quartz,文档里说是兼容所有版本,但是代码连编译都报错,无奈只好从网上找资料,摸着石头过河总算有点眉目,在 ...

  5. Java任务调度框架Quartz

    转自:http://blog.csdn.net/yuebinghaoyuan/article/details/9045471  介绍  Quartz is a full-featured, open ...

  6. Java任务调度框架Quartz入门

    Quartz[kwɔːts]:石英,其框架和名字一样简单朴素又不失魅力,在Java程序界,Quartz大名鼎鼎,很多Java应用几乎都集成或构建了一个定时任务调度系统,Quartz是一个定时任务调度框 ...

  7. (转)Java任务调度框架Quartz入门教程指南(三)任务调度框架Quartz实例详解深入理解Scheduler,Job,Trigger,JobDetail

    http://blog.csdn.net/zixiao217/article/details/53053598 首先给一个简明扼要的理解: Scheduler 调度程序-任务执行计划表,只有安排进执行 ...

  8. Java任务调度框架Quartz教程实例

    介绍: Quartz框架是一个全功能.开源的任务调度服务,可以集成几乎任何的java应用程序—从小的单片机系统到大型的电子商务系统.Quartz可以执行上千上万的任务调度.   核心概念   Quar ...

  9. java任务调度之Timer定时器

    定时器相信大家都不陌生,平时使用定时器就像使用闹钟一样,我们可以在固定的时间做某件事,也可以在固定的时间段重复做某件事,今天就来分析一下java中自带的定时任务器Timer. 一.Timer基本使用 ...

  10. Java任务调度框架Quartz教程

    一.什么是quartz作业调度? Quartz框架是一个全功能.开源的任务调度服务,可以集成几乎任何的java应用程序—从小的单片机系统到大型的电子商务系统.Quartz可以执行上千上万的任务调度. ...

随机推荐

  1. 车牌识别LPR(七)-- 字符特征

    第七篇:字符特征 选择的字符特征应该满足以下条件: (1)选取的字符特征具有较强的鲁棒性,不受字符变形.弯曲等影响. (2)两个字符的字符特征不能完全相同,但部分相同是允许的,即选择的字符特征是唯一的 ...

  2. 9本java程序员必读的书

    来源:http://mp.weixin.qq.com/s?__biz=MjM5NzA1MTcyMA==&mid=202904638&idx=2&sn=21dd20438e32a ...

  3. Unity 教程和源码

    12个Unity3D游戏源码 -  新手必备 愤怒的小鸟攻略技巧秘籍 NGUI 教程收录大全:http://forum.exceedu.com/forum/forum.php?mod=viewthre ...

  4. ogre, dx, opengl坐标矩阵

    opengl 右手坐标系 列向量 左乘 列主序存储矩阵osg   右手坐标系 行向量 右乘 行主序存储矩阵d3d       左手坐标系 行向量 右乘 行主序存储矩阵ogre    右手坐标系 列向量 ...

  5. bzoj1406: [AHOI2007]密码箱

    数学. x^2 % n = 1 则 (x+1)(x-1) = kn. 设 x+1 = k1*n1, x-1=k2*n2. 则 k1*k2=k , n1*n2=n. 算出每个大于sqrt(n)的约数,然 ...

  6. BZOJ_1028_[JSOI2007]_麻将_(模拟+贪心)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1028 同一种花色的牌,序数为\(1,2,...,n\).定义"和了"为手上 ...

  7. asp.net获取文件夹下的所有文件

    using System; using System.Collections.Generic; using System.Web; using System.Web.UI; using System. ...

  8. codeforces 340C Tourist Problem(简单数学题)

    题意:固定起点是0,给出一个序列表示n个点,所有点都在一条直线上,其中每个元素代表了从起点到这个点所走的距离.已知路过某个点不算到达这个点,则从起点出发,到达所有点的方案有许多种.求所有方案走的总路程 ...

  9. codevs 1197 Vigenère密码

    开始做NOIP啦.. #include<iostream> #include<cstdio> #include<cstring> #include<algor ...

  10. Xcode5 编译ffmpeg,arm64版本;H264

    编译选项:./configure  —-cc=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchai ...