Linux系统时间修改影响sleep,更改操作系统时间时sleep()中的Java错误:有任何解决方法?...
使我烦恼的臭虫和这张票一样。基本上,如果将操作系统时钟更改为过去的日期,则更改时休眠的所有线程都不会唤醒。
我正在开发的应用程序打算在24/24上运行,我们希望能够在不停止OS的情况下更改OS日期(例如,从夏季时间切换为冬季时间)。目前发生的事情是,当我们将日期更改为过去的日期时,应用程序的某些部分就会冻结。我在多台计算机上,Windows
XP和Linux 2.6.37以及最近的JVM(1.6.0.22)上都观察到了这一点。
我尝试了许多Java睡眠原语,但是它们都有相同的行为:
Thread.sleep(长)
Thread.sleep(long,int)
Object.wait(长)
Object.wait(long,int)
Thread.join(长)
Thread.join(long,int)
LockSupport.parkNanos(长)
java.util.Timer
javax.swing.Timer
现在,我不知道要解决此问题。我认为我无法采取任何措施来防止睡眠线程冻结。但是,我至少希望在检测到危险的系统时钟更改时向用户发出警告。
我想出了一个监视线程来检测这种变化:
Thread t = new Thread(new Runnable() {
@Override
public void run() {
long ms1 = System.currentTimeMillis();
long ms2;
while(true) {
m
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
