java time schedule_Java Timer schedule疑问
因为你task的运行时间超过了timer的周期,核心源码在这:java.util.TimerThread#mainLoopprivate void mainLoop() {
while (true) {
try {
TimerTask task;
boolean taskFired;
synchronized(queue) {
// Wait for queue to become non-empty
while (queue.isEmpty() && newTasksMayBeScheduled)
queue.wait();
if (queue.isEmpty())
break; // Queue is empty and will forever remain; die
// Queue nonempty; look at first evt and do the right thing long currentTime, executionTime;
task = queue.getMin();
synchronized(task.lock) {
if (task.state == TimerTask.CANCELLED) {
queue.removeMin();
continue; // No action required, poll queue again
}
currentTime = System.currentTimeMillis();
executionTime = task.nextExecutionTime;
if (taskFired = (executionTime<=currentTime)) {
if (task.period == 0) { // Non-repeating, remove
queue.removeMin();
task.state = TimerTask.EXECUTED;
} else { // Repeating task, reschedule
queue.rescheduleMin(
task.period<0 ? currentTime - task.period
: executionTime + task.period);
}
} } if (!taskFired) // Task hasn't yet fired; wait
queue.wait(executionTime - currentTime);
}
if (taskFired) // Task fired; run it, holding no locks
task.run();
} catch(InterruptedException e) {
} }}
taskFired 的判断条件是 executionTime<=currentTime,你的这种情况是true,接下来任务就直接run了:if (taskFired) // Task fired; run it, holding no locks
task.run();
java time schedule_Java Timer schedule疑问相关推荐
- java 好用的 schedule_Java用Timer schedule搞定定时职务
技术人员在完成内部办公系统与外部站点一体化的时辰,最主要的步骤就是从OA系统读取数据,并且依据站点模板生成开头的静态页面.这里就须要一个定时职务,循环的执行. 技术人员在写定时职务的时辰,想当然的以为 ...
- java timer schedule_Java Timer的使用,timer.schedule定时执行
1.概览 Timer是一种定时器工具,用来在一个后台线程计划执行指定任务.它可以计划执行一个任务一次或反复多次. TimerTask一个抽象类,它的子类代表一个可以被Timer计划的任务. 简单的一个 ...
- java关于Timer schedule执行定时任务 1、在应用开发中,经常需要一些周期性的操作,比如每5分钟执行某一操作等...
1.在应用开发中,经常需要一些周期性的操作,比如每5分钟执行某一操作等.对于这样的操作最方便.高效的实现方式就是使用java.util.Timer工具类. private java.util.Time ...
- java timer 使用_Java Timer的使用(timer.schedule定时执行) | 学步园
Timer是一种定时器工具,用来在一个后台线程计划执行指定任务.它可以计划执行一个任务一次或反复多次. TimerTask一个抽象类,它的子类代表一个可以被Timer计划的任务. 简单的一个例程: J ...
- java 定时器 schedule_java 定时器中schedule方法解析
近期工作中接触到java的定时器,记下自己在使用schedule方法遇到的小问题,时刻提醒自己对待程序要认真再认真. 先写个小例子: package Demo; import java.util.Ti ...
- Java基础--定时任务Timer
一.Timer介绍 java.util.Timer java.util.TimerTask Timer是一个定时器类,通过该类可以为指定的定时任务进行配置.TimerTask类是一个定时任务类,该类实 ...
- Java程序中Timer的用法
Java程序中Timer的用法 import java.io.IOException; import java.util.Timer; public class CheckTimer {/*** @p ...
- timer.schedule —— timer定时器的用法
Java.util.Timer定时器,实际上是个线程,定时调度所拥有的TimerTasks. 一个TimerTask实际上就是一个拥有run方法的类,需要定时执行的代码放到run方法体内,TimerT ...
- Java中的Timer和Timer Task详解
Java Timer&TimerTask原理分析 如果你使用Java语言进行开发,对于定时执行任务这样的需求,自然而然会想到使用Timer和TimerTask完成任务,我最近就使用 Timer ...
- java捕获定时器抛出的异常_详细了解Java中定时器Timer的使用及缺陷分析
在需要定时并且周期执行任务时,在最初的JAVA工具类库中,Timer可以实现任务的定时周期执行的需求,不过有一定的缺陷,比如,Timer是基于绝对时间而非相对时间,因此Timer对系统时钟比较敏感,本 ...
最新文章
- Cloudera maneger登录页面后的操作是什么?
- java深拷贝和浅拷贝介绍
- 【python】-- Django 中间件、缓存、信号
- android广播第三方库,Android Support 库:LocalBroadcastManager
- 一亿像素下放!Redmi Note 10系列相机曝光:长焦微距全都有
- Linux学习总结(53)——后台启动nohup /dev/null 21 使用总结
- PHP 数组排序函数sort,rsort,ksort,krsort,asort,arsort区别
- 俄罗斯政府称“主权网络”测试成功
- 史上最全论文下载方法
- 列线图实现预测模型可视化
- html5和css基础知识
- 未来计算机手抄报图片,小学生科技创造未来手抄报图片简单又漂亮
- MXNet的训练基础脚本:base_module.py
- Linux 操作系统(二)搜索文件命令find、locate、which、whereis、grep、wc
- Blender_7_倒角
- 从零开始机器学习-2 十分钟让你的AI睁开双眼
- 新数据时代存储怎么卖,浪潮存储有高招!
- JS toFixed的使用误差,银行家算法(四舍六入五取偶)实现
- vectorvn1610报价_Vector硬件VN1640A
- 使用C++完成一个小型双人对战回合制游戏
热门文章
- 奔小康赚大钱 HDU - 2255(最大权值匹配 KM板题)
- iOS多线程编程--NSOperation(转)
- FastReport.Net使用:[18]形状(Shape)控件用法
- SQL Server 数据操作
- MyEclipse配色
- 【Spring-AOP】底层类ProxyConfig,ProxyProcessorSupport分析
- Java代码块、构造方法(包含继承关系)的执行顺序
- 单元测试框架TestableMock快速入门(七):常用注解参数
- 【Hoxton.SR1版本】Spring Cloud Ribbon负载均衡服务调用
- 设计模式 ( 十三 ) JDK动态代理模式