因为你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疑问相关推荐

  1. java 好用的 schedule_Java用Timer schedule搞定定时职务

    技术人员在完成内部办公系统与外部站点一体化的时辰,最主要的步骤就是从OA系统读取数据,并且依据站点模板生成开头的静态页面.这里就须要一个定时职务,循环的执行. 技术人员在写定时职务的时辰,想当然的以为 ...

  2. java timer schedule_Java Timer的使用,timer.schedule定时执行

    1.概览 Timer是一种定时器工具,用来在一个后台线程计划执行指定任务.它可以计划执行一个任务一次或反复多次. TimerTask一个抽象类,它的子类代表一个可以被Timer计划的任务. 简单的一个 ...

  3. java关于Timer schedule执行定时任务 1、在应用开发中,经常需要一些周期性的操作,比如每5分钟执行某一操作等...

    1.在应用开发中,经常需要一些周期性的操作,比如每5分钟执行某一操作等.对于这样的操作最方便.高效的实现方式就是使用java.util.Timer工具类. private java.util.Time ...

  4. java timer 使用_Java Timer的使用(timer.schedule定时执行) | 学步园

    Timer是一种定时器工具,用来在一个后台线程计划执行指定任务.它可以计划执行一个任务一次或反复多次. TimerTask一个抽象类,它的子类代表一个可以被Timer计划的任务. 简单的一个例程: J ...

  5. java 定时器 schedule_java 定时器中schedule方法解析

    近期工作中接触到java的定时器,记下自己在使用schedule方法遇到的小问题,时刻提醒自己对待程序要认真再认真. 先写个小例子: package Demo; import java.util.Ti ...

  6. Java基础--定时任务Timer

    一.Timer介绍 java.util.Timer java.util.TimerTask Timer是一个定时器类,通过该类可以为指定的定时任务进行配置.TimerTask类是一个定时任务类,该类实 ...

  7. Java程序中Timer的用法

    Java程序中Timer的用法 import java.io.IOException; import java.util.Timer; public class CheckTimer {/*** @p ...

  8. timer.schedule —— timer定时器的用法

    Java.util.Timer定时器,实际上是个线程,定时调度所拥有的TimerTasks. 一个TimerTask实际上就是一个拥有run方法的类,需要定时执行的代码放到run方法体内,TimerT ...

  9. Java中的Timer和Timer Task详解

    Java Timer&TimerTask原理分析 如果你使用Java语言进行开发,对于定时执行任务这样的需求,自然而然会想到使用Timer和TimerTask完成任务,我最近就使用 Timer ...

  10. java捕获定时器抛出的异常_详细了解Java中定时器Timer的使用及缺陷分析

    在需要定时并且周期执行任务时,在最初的JAVA工具类库中,Timer可以实现任务的定时周期执行的需求,不过有一定的缺陷,比如,Timer是基于绝对时间而非相对时间,因此Timer对系统时钟比较敏感,本 ...

最新文章

  1. Cloudera maneger登录页面后的操作是什么?
  2. java深拷贝和浅拷贝介绍
  3. 【python】-- Django 中间件、缓存、信号
  4. android广播第三方库,Android Support 库:LocalBroadcastManager
  5. 一亿像素下放!Redmi Note 10系列相机曝光:长焦微距全都有
  6. Linux学习总结(53)——后台启动nohup /dev/null 21 使用总结
  7. PHP 数组排序函数sort,rsort,ksort,krsort,asort,arsort区别
  8. 俄罗斯政府称“主权网络”测试成功
  9. 史上最全论文下载方法
  10. 列线图实现预测模型可视化
  11. html5和css基础知识
  12. 未来计算机手抄报图片,小学生科技创造未来手抄报图片简单又漂亮
  13. MXNet的训练基础脚本:base_module.py
  14. Linux 操作系统(二)搜索文件命令find、locate、which、whereis、grep、wc
  15. Blender_7_倒角
  16. 从零开始机器学习-2 十分钟让你的AI睁开双眼
  17. 新数据时代存储怎么卖,浪潮存储有高招!
  18. JS toFixed的使用误差,银行家算法(四舍六入五取偶)实现
  19. vectorvn1610报价_Vector硬件VN1640A
  20. 使用C++完成一个小型双人对战回合制游戏

热门文章

  1. 奔小康赚大钱 HDU - 2255(最大权值匹配 KM板题)
  2. iOS多线程编程--NSOperation(转)
  3. FastReport.Net使用:[18]形状(Shape)控件用法
  4. SQL Server 数据操作
  5. MyEclipse配色
  6. 【Spring-AOP】底层类ProxyConfig,ProxyProcessorSupport分析
  7. Java代码块、构造方法(包含继承关系)的执行顺序
  8. 单元测试框架TestableMock快速入门(七):常用注解参数
  9. 【Hoxton.SR1版本】Spring Cloud Ribbon负载均衡服务调用
  10. 设计模式 ( 十三 ) JDK动态代理模式