社区
Java EE
帖子详情
★★★用ntp时间同步之后,Thread.sleep睡眠时间不对★★★
wuzhixuexi
2010-11-27 07:34:48
ntp时间同步之前,调用线程sleep(xxxxxxx),预计是凌晨03:00的时候sleep结束线程被唤醒。
但是在凌晨01:00左右进行ntp时间同步之后系统时间出现了10几秒的误差,
这个之后线程居然在02:50分就被唤醒了。
我不太明白为什么ntp只是出现了10来秒的误差,现成的sleep方法会出来10分钟左右的
误差呢。
...全文
225
9
打赏
收藏
★★★用ntp时间同步之后,Thread.sleep睡眠时间不对★★★
ntp时间同步之前,调用线程sleep(xxxxxxx),预计是凌晨03:00的时候sleep结束线程被唤醒。 但是在凌晨01:00左右进行ntp时间同步之后系统时间出现了10几秒的误差, 这个之后线程居然在02:50分就被唤醒了。 我不太明白为什么ntp只是出现了10来秒的误差,现成的sleep方法会出来10分钟左右的 误差呢。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zabaglione
2011-01-22
打赏
举报
回复
看看不知道啥原因阿
wuzhixuexi
2010-12-02
打赏
举报
回复
我用windows作ntpserver,linux作ntpclient
也没有发生这样的问题啊。有没有高手可以解答一下
wuzhixuexi
2010-11-27
打赏
举报
回复
[Quote=引用 5 楼 magong 的回复:]
引用 3 楼 magong 的回复:
把一个长长的sleep拆成若干短的sleep,循环来。
怀疑你中途调整时间对那个已经进入的sleep可能没作用。
仔细想想觉得这个点子其实也不够。还要在短sleep之间监测系统时间。
即:
用时间查询来决定是否到达时间,而不是依赖sleep自己的计时。
(这样你调整系统时间才具有了现实意义)
[/Quote]
嗯,谢谢你,这个方法确实很好,可以解决这个问题。
解决之前,我想知道是什么原因造成的。为什么ntp只调整了10来秒,但是sleep误差达到了5分钟
这个不太明白原因
我目前用
windows作ntpserver
linux作ntpclient
正在试验看看
magong
2010-11-27
打赏
举报
回复
[Quote=引用 3 楼 magong 的回复:]
把一个长长的sleep拆成若干短的sleep,循环来。
怀疑你中途调整时间对那个已经进入的sleep可能没作用。
[/Quote]
仔细想想觉得这个点子其实也不够。还要在短sleep之间监测系统时间。
即:
用时间查询来决定是否到达时间,而不是依赖sleep自己的计时。
(这样你调整系统时间才具有了现实意义)
wuzhixuexi
2010-11-27
打赏
举报
回复
[Quote=引用 3 楼 magong 的回复:]
把一个长长的sleep拆成若干短的sleep,循环来。
怀疑你中途调整时间对那个已经进入的sleep可能没作用。
[/Quote]
sleep是按照毫秒单位计时的,ntp调整的是系统时间。
我觉得sleep一旦设置了睡眠的毫秒数就应该和ntp没有啥关系了阿。。。。
我就是弄不明白,那多出来的5分钟是怎么出来的。。。
magong
2010-11-27
打赏
举报
回复
把一个长长的sleep拆成若干短的sleep,循环来。
怀疑你中途调整时间对那个已经进入的sleep可能没作用。
wuzhixuexi
2010-11-27
打赏
举报
回复
[Quote=引用 1 楼 magong 的回复:]
计算机时钟本来就不准,LZ多长时间误差了10分钟?
[/Quote]
因为业务上面的需要,线程必须sleep 18个小时。
就用18*60*60 = 64800秒来设置的,因为sleep设置毫秒级别
所以就变成了sleep(64800000)
比如早晨
11/27 08:00:00开始执行sleep
11/28 02:00:00预计唤醒sleep
但是在11/28 01:00左右有了一个ntp的时间同步处理,这个时候
把系统时间向前调了10来秒,按道理sleep也只误差10来秒才对,
但是我发现sleep误差了5分钟左右
在11/28 01:55:00就被唤醒了
不知道什么原因
magong
2010-11-27
打赏
举报
回复
计算机时钟本来就不准,LZ多长时间误差了10分钟?
linux
ntp
时间
同步
精度,
ntp
:
时间
同步
的精度肿么测
刚刚装了RHEL5β2版本发现这个版本的ps和top里面是有Ss的man了一下 ps和top解释如下PROCESS STATE CODESHere are the different values that the s, stat and state output specifiers(header "STAT" or "S") will display to describe the state...
奥塔在线:Centos7下
NTP
服务的详细部署说明
一、
NTP
是什么?
NTP
即Network Time Protocol(网络
时间
协议),是一个互联网协议,用于同步网络设备【如计算机、手机】之间的系统时钟。 二、
NTP
实现什么目的? 目的很简单,就是为了提供准确
时间
,保障业务系统间的
时间
的一致性。因为我们的手表、手机、电脑等电子设备,经常会跑着跑着
时间
就出现了误差,或快或慢的少几秒,
时间
长了甚至误差过分钟。这对系统数据的准确性、有效...
2021-11-29 micpython esp32 RTC
时间
NTP
TIME同步 ulogger日志系统的测试
日志这个东西,说有用就有用说没用也没用,但是板子在那运行,里边到底跑了些什么,有时候还真得靠日志找一找,就像示波器一样。 那么,本次就是一次日志的MICROPYTHON 的测试了,首先贴上库代码位置为ulogger/--init--.py 查了好几个资料,发现好几个都不能用,唯一这个库比较靠谱,那就先把代码帖下面 try: import time except: import utime as time try: import re except: import ure as re try:
rust 如何用单调时钟获取更精确的
时间
间隔
Wall Clock vs Monotonic Clock (墙上时钟 vs 单调时钟) 墙上时钟指的是我们日常意义上的
时间
,正如墙上的时钟代表的
时间
一样。单调时钟指的是某个
时间
点后开始计算的
时间
,单纯意义上的代表的
时间
是没有意义的。 操作系统上相对应的提供了两套
时间
,分别对应墙上时钟和单调时钟,操作系统用UTC来代表墙上时钟,UTC不支持闰秒, 并且可以认为更改,而且操作系统的
时间
是通过石英钟等来实现的,会由于温度等不可控因素导致
时间
发生偏移, 往往会通过网络
时间
协议
NTP
来进行同步,因此UTC天然存在着
NTP
方式保证以
时间
戳同步可靠性
数据库同步的方式有设置标志位同步方式、以
时间
戳同步的方式,对于一对一的同步这两种方式都满足,可是对于一对多的同步,则仅仅能选择
时间
戳的同步方式了。可是已
时间
戳同步的方式的一个问题是怎样可靠的保证数据能够不丢失的同步到数据库中。以下有两种方式来保证以
时间
戳同步的可靠性。 1、计算server与client两台电脑的
时间
差,将该
时间
差记入在同步
时间
的比对其中,下图是使用kettle做的一个计...
Java EE
67,513
社区成员
225,879
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章