java调度:(三)Timer中的单线程守护
早听说Timer中是单守护进程在执行所有的任务,在调度的时候会有一些问题,现做下面例子来测试:
首先做两个简单的任务:
1. TimerJOB1
package test;import java.util.Date;
import java.util.TimerTask;public class TimerJOB1 extends TimerTask {public TimerJOB1(){super();}@Overridepublic void run() {System.out.println("TimerJOB1:开始执行时间:"+new Date());try {//让线程睡30秒Thread.sleep(1000*30);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println("TimerJOB1结束执行时间:"+new Date());}}
2.TimerJOB2
package test;import java.util.Date;
import java.util.TimerTask;public class TimerJOB2 extends TimerTask {public TimerJOB2(){super();}@Overridepublic void run() {System.out.println("TimerJOB2:开始执行时间:"+new Date());try {//让线程睡30秒Thread.sleep(1000*30);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println("TimerJOB2结束执行时间:"+new Date());}}
3. 从现在开始 1 秒钟之后,每隔 5秒执行一次 TimerJob1 ,因为TimerJob1 的执行时间是大于30s ,那么在第一次调度未完成之前第二次调度就应该开始了,会发生什么事呢?
package test;
import java.util.Timer; public class TestTimer { public static void main(String[] args) { Timer timer = new Timer(); long delay1 = 1 * 1000; long period1 = 5*1000; // 从现在开始 1 秒钟之后,每隔 5秒执行一次 job1 timer.schedule(new TimerJOB1(), delay1, period1); /*** <pre>* 执行结果:* TimerJOB1:开始执行时间:Fri Feb 22 15:20:32 CST 2013TimerJOB1结束执行时间:Fri Feb 22 15:21:02 CST 2013TimerJOB1:开始执行时间:Fri Feb 22 15:21:02 CST 2013TimerJOB1结束执行时间:Fri Feb 22 15:21:32 CST 2013TimerJOB1:开始执行时间:Fri Feb 22 15:21:32 CST 2013TimerJOB1结束执行时间:Fri Feb 22 15:22:02 CST 2013TimerJOB1:开始执行时间:Fri Feb 22 15:22:02 CST 2013</pre>*/} }
由上面可以看出,只有在当前的JOB完成之后才会执行下次job.
4. 分别调用两个job,都是每隔5秒,及第一个job第一次还没有执行完,第二个job第一次与第一个job第二次都该执行了,会一直调用一个job还是job1与job2轮换调用?
package test;
import java.util.Timer; public class TestTimer { public static void main(String[] args) { Timer timer = new Timer(); long delay1 = 1 * 1000; long period1 = 5*1000; // 从现在开始 1 秒钟之后,每隔 5秒执行一次 job1 timer.schedule(new TimerJOB1(), delay1, period1); long delay2 = 1 * 1000; long period2 = 1*5000; // 从现在开始 1 秒钟之后,每隔 5 秒钟执行一次 job2 timer.schedule(new TimerJOB2(), delay2, period2); /*TimerJOB1:开始执行时间:Fri Feb 22 15:25:47 CST 2013TimerJOB1结束执行时间:Fri Feb 22 15:26:17 CST 2013TimerJOB2:开始执行时间:Fri Feb 22 15:26:17 CST 2013TimerJOB2结束执行时间:Fri Feb 22 15:26:47 CST 2013TimerJOB1:开始执行时间:Fri Feb 22 15:26:47 CST 2013TimerJOB1结束执行时间:Fri Feb 22 15:27:17 CST 2013TimerJOB2:开始执行时间:Fri Feb 22 15:27:17 CST 2013TimerJOB2结束执行时间:Fri Feb 22 15:27:47 CST 2013TimerJOB1:开始执行时间:Fri Feb 22 15:27:47 CST 2013TimerJOB1结束执行时间:Fri Feb 22 15:28:17 CST 2013TimerJOB2:开始执行时间:Fri Feb 22 15:28:17 CST 2013*/} }
java调度:(三)Timer中的单线程守护相关推荐
- Java求三个数中的最大值
三个数a b c int a = 10;int b = 100;int c = 1000; 第一种方式if嵌套 int max = 0;if (a > b) {if (a > c) {ma ...
- java调度:(二)在项目中调度策略的选择
目前的两个项目中,用到大部分的任务调度,有一些思考简单写下来. 一. 如果当前的任务调度很简单,例如:管理任务延迟执行("如1000ms后执行任务")以及周期性执行("如 ...
- 有效期判断功能 java_有效的Java第三版有哪些新功能?
有效期判断功能 java 自从听说即将出版的有效Java 第三版以来,我一直想知道其中有什么新内容. 我假设将涵盖自Java 6以来引入Java的功能,的确如此. 但是,第三版Java开发人员经典版也 ...
- Java学习小程序(2)输出三个数中的最大值
用户从控制台接收三个整数,通过程序找出三个数中的最大值.(3种方法) package day03; //输入三个int数中的最大值 import java.util.Scanner; public c ...
- 简单理解JAVA中什么是守护线程,什么是非守护线程?
java中守护线程和非守护线程 什么是守护线程,什么是非守护线程? java有两种状态的线程 守护线程与非守护线程的区别 守护线程与非守护线程代码演示区别 创建守护线程 守护线程:主线程销毁停止,守护 ...
- JAVA 三目运算符 判断三个数中的最大值
理解三目运算符使用规则 灵活嵌套使用 代码 import java.util.Scanner;public class MaxNumber{public static void main(String ...
- java 使用三元运算符和if-else获取两个和三个数中的最大值
三元运算符格式 三元运算符:获取两个数中最大值 三元运算符:获取三个数中最大值 三元运算符:总代码 //案例1:获取两个数中最大的数int num1=78;int num2=56;int max1=( ...
- java调度:(一)几种任务调度的 Java 实现方法与比较
转载自:http://www.oschina.net/question/129540_28053 综观目前的 Web 应用,多数应用都具备任务调度的功能.本文由浅入深介绍了几种任务调度的 Java 实 ...
- java线程三种方法,Java基础_线程的使用及创建线程的三种方法
线程:线程是操作系统能够进行运算调度的最小单位.它被包含在进程之中,是进程中的实际运作单位.一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务. 进程:进 ...
最新文章
- 基于Dialog的MFC程序在启动时隐藏为托盘程序(四)
- 面试问什么是无损降级?
- python中画圆的代码_Python编程12:Python画图之turtle库如何画圆
- Servlet的部分request请求处理
- QT实现不同内置主题的外观
- 下面哪个字段是http请求中必须具备的_HTTP 协议报文结构及示例
- 条款5:了解C++默默编写并调用哪些函数(Know what functions C++ silently writes and calls)...
- 我觉得我们看到的所谓“善良人”
- always on sql 收缩日志_啥?我写的一条SQL让公司网站瘫痪了...
- 冒泡排序C语言(从小到大)
- 基于tkinter的九型人格测试系统介绍
- 卡诺模型案例分析_通过KANO模型来协调优先级排序(附实例)
- navicat 解析sql_navicat
- javaOOP -- 笔记
- 【学习笔记】《基于φ-OTDR的分布式扰动传感系统定位算法研究-北交-通信与信息系统-吴》重点笔记
- vue路由守卫beforeEach和afterEach
- Tomcat安装与部署
- 单声道数据转双声道_单声道转双声道方法
- MVC 音乐商店 第 9 部分: 注册和结帐
- k图着色 遗传算法的简单python伪代码