首页
学习
活动
专区
工具
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 综合了两种数据结构来最大程度的提升性能

31330

为什么放弃 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,第一次运行会较慢。

89910

为什么放弃 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.

91260

为什么实现Serializable

为什么实现Serializable 工作中我们经常在进行持久化操作和返回数据时都会使用到javabean来统一封装参数,方便操作,一般我们也都会实现Serializable接口,那么问题来了,首先:为什么进行序列化...实现serializable接口的作用是就是可以把对象存到字节流,然后可以恢复,所以你想如果你的对象没实现序列化怎么才能进行持久化和网络传输呢,持久化和网络传输就得转为字节流,所以在分布式应用中及设计数据持久化的场景中...数据库中,并没有与我们java基本类型对应的数据结构,所以在往nosql数据库中存储时,我们就必须将对象进行序列化,同时在网络传输中我们要注意到两个应用中javabean的serialVersionUID保持一致

2.2K21
领券