首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么TimerTask要运行两次?

TimerTask是Java中用于定时执行任务的类。它可以在指定的时间间隔内重复执行任务,也可以在指定的时间点执行任务。

TimerTask要运行两次的原因是为了确保任务能够准时执行。在Timer中,任务的执行时间是通过计算当前时间和指定的执行时间之间的差值得出的。如果任务的执行时间已经过去了,那么Timer会立即执行任务。但是,由于计算时间的误差和系统的延迟等原因,有时任务可能会延迟执行。

为了解决这个问题,TimerTask会在第一次执行之后再次执行一次。第一次执行时,会计算下一次执行的时间,并将其设置为准确的执行时间。这样,即使第一次执行有延迟,下一次执行也能够准时进行。

需要注意的是,TimerTask的执行时间是相对于上一次任务的完成时间来计算的,而不是相对于上一次任务的开始时间。这意味着,如果任务的执行时间超过了指定的时间间隔,那么任务可能会连续执行多次,直到追赶上当前时间为止。

总结起来,TimerTask要运行两次是为了确保任务能够准时执行,并通过计算当前时间和指定的执行时间之间的差值来确定下一次执行的时间。这样可以弥补计算时间的误差和系统延迟可能导致的执行延迟。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

同一份数据,Redis为什么两次

集合对象常用命令 五种基本类型之有序集合对象 有序集合对象常用命令 总结 ---- 前言 在 Redis 中,有一种数据类型,当在存储的时候会同时采用两种数据结构来进行分别存储,那么 Redis 为什么这么做呢...3.现在新的数组内放置 4 个元素,原来的数组排在第 3,所以需要将升级后的 3 移动到 64-95 位。 4.继续将升级后的 2 移动到 32-63 位。...也就是说字典和跳跃表中的数据都指向了我们存储的元素(两种数据结构最终指向的是同一个地址,所以数据并不会出现冗余存储),Redis 为什么这么做呢?...为什么同时选择使用字典和跳跃表 有序集合直接使用跳跃表或者单独使用字典完全可以独自实现,但是我们想一下,如果单独使用跳跃表来实现,那么虽然可以使用跨度大的指针去遍历元素来找到我们需要的数据,但是其复杂度仍然达到了...O(logN),而字典中获取一个元素的复杂度是 O(1),而如果单独使用字典虽然获取元素很快,但是字典是无序的,所以如果范围查找就需要对其进行排序,这又是一个耗时的操作,所以 Redis 综合了两种数据结构来最大程度的提升性能

33130

为什么放弃 JSP ?

我们先假设你的首页中有100张图片,以及一个单表的查询,此时,用户的看似一次http请求,其实并不是一次,用户在第一次访问的时候,浏览器中不会有缓存,你的100张图片,浏览器连着请求100次http请求...这就是为什么,越是大中型的Web应用,他们越是解耦。...步入正题 下面步入正题,首先以后的 Java web项目都尽量避免使用JSP,搞前后台解耦,玩分布式架构,这样我们的应用架构才更强。 使用 JSP 的痛点: 1....JSP 必须要在支持Sava的Web服务器里运行(例如tomcat等),无法使用nginx等(nginx据说单实例http并发高达5w,这个优势要用上),性能提不上来。 4....第一次请JSP,必须要在web服务器中编译成servlet,第一次运行会较慢。 5. 每次请求JSP都是访问Servlet再用输出流输出的html页面,效率没有直接使用html高。 6.

1K40

为什么放弃 JSP ?

我们先假设你的首页中有 100 张图片,以及一个单表的查询,此时,用户的看似一次 http 请求,其实并不是一次,用户在第一次访问的时候,浏览器中不会有缓存,你的 100 张图片,浏览器连着请求 100...这就是为什么,越是大中型的 Web 应用,他们越是解耦。...步入正题 下面步入正题,首先以后的 Java Web 项目都尽量避免使用 JSP,搞前后端解耦,玩分布式架构,这样我们的应用架构才更强。...JSP 必须要在支持 Servlet 的 Web 服务器里运行(例如 tomcat 等),无法使用 nginx 等(nginx 据说单实例 http 并发高达 5w,这个优势要用上),性能提不上来。...第一次请请求 JSP,必须要在 Web 服务器中编译成 Servlet,第一次运行会较慢。

94210

为什么放弃 JSP ?

我们先假设你的首页中有100张图片,以及一个单表的查询,此时,用户的看似一次http请求,其实并不是一次,用户在第一次访问的时候,浏览器中不会有缓存,你的100张图片,浏览器连着请求100次http请求...这就是为什么,越是大中型的Web应用,他们越是解耦。...2、步入正题 下面步入正题,首先以后的 Java web项目都尽量避免使用JSP,搞前后台解耦,玩分布式架构,这样我们的应用架构才更强。 使用 JSP 的痛点: 1....JSP 必须要在支持Sava的Web服务器里运行(例如tomcat等),无法使用nginx等(nginx据说单实例http并发高达5w,这个优势要用上),性能提不上来。 4....第一次请JSP,必须要在web服务器中编译成servlet,第一次运行会较慢。 5. 每次请求JSP都是访问Servlet再用输出流输出的html页面,效率没有直接使用html高。 6.

92360

为什么持续重构

再过几年,新系统也会变成老系统 一个正在运行的系统,如何新老系统平滑迁移?...为什么重构?   一般说需要重构了,都会是因为面临着一些问题。近期问题如:不能支持业务、故障、响应不满足需求、单点无法扩容。长期问题如:维护成本大、扩容成本大、有明显风险、不支持业务扩展。   ...当初资源申请困难是因为我一直都没解释清楚为什么一改就出问题。因为按照正常的理解:改出来问题是能力的问题,对业务没有很好的把控,对代码没有深入的研究。...为什么持续重构? 从本质上,重构就是在代码写好之后改进它的设计。...重构使软件更容易理解 重构帮助找到bug 重构提高编程速度   对我们组来说,为什么持续重构?   因为持续重构的代码是确保代码长期没有人动,一动就出问题的有效手动。 何时重构?

1.8K10
领券