Tag: 睡觉

我怎样才能保证Thread.sleep至少能睡一段时间?

根据这个问题 , Thread.sleep不一定保证在您指定的持续时间内hibernate:它可能更短或更长。 如果您阅读Thread.sleep的文档,您会发现在睡眠的确切持续时间内没有强有力的保证。 它具体说明持续时间是 受制于系统定时器和调度器的精度和准确性 这是(有意)含糊不清但暗示不应过分依赖持续时间。 特定操作系统上可能的睡眠持续时间的粒度由线程调度程序的中断周期确定。 在Windows中,调度程序的中断周期通常大约为10或15毫秒(我相信这是由处理器决定的), 但可以在软件中请求更高的周期,Hotspot JVM在认为必要时会这样做 来源 ,强调我的 我怎样才能保证睡眠持续时间至少是我指定的值?

Thread.sleep()永远不会返回

我在Java上遇到Thread.sleep()的奇怪错误。 出于某种原因,当我在某些机器上调用睡眠时,它永远不会返回。 我无法弄清楚可能导致此行为的原因。 起初,我的错误可能在我的代码的其他地方,所以我做了最简单的睡眠测试: public class SleepTest { public static void main (String [] args) { System.out.println (“Before sleep…”); try { Thread.sleep (100); } catch (InterruptedException e) { } System.out.println (“After sleep…”); } } 在大多数机器上它都可以工作,但是在我远程登录的几台机器上,它会在打印语句之间无限期地暂停。 我等了半个小时,行为没有变化。 显示此错误的计算机是Linux计算机。 以下是有关机器的一些信息: $ uname -a Linux zone29ea 2.6.32-220.17.1.el6.x86_64 #1 SMP Tue May 15 17:16:46 CDT 2012 x86_64 x86_64 x86_64 […]

睡眠的目的是什么(long millis,int nanos)?

在JDK中,它实现为: public static void sleep(long millis, int nanos) throws InterruptedException { if (millis < 0) { throw new IllegalArgumentException("timeout value is negative"); } if (nanos 999999) { throw new IllegalArgumentException( “nanosecond timeout value out of range”); } if (nanos >= 500000 || (nanos != 0 && millis == 0)) { millis++; } sleep(millis); } 这意味着nanos论证根本没有做任何事情。 […]

Thread.sleep()挂了吗?

这是我的简单代码,每秒循环(不需要精确),并在必要时开始工作: while (true) { // check db for new jobs and // kick off thread if necessary try { Thread.sleep(1000); } catch(Throwable t) { LOG.error(“”, t); } } 这段代码已经好几个月了。 就在昨天,我们开始遇到问题,其中一个服务器似乎挂在Thread.sleep(1000)方法中 。 IOW – 已经过了一天而且Thread.sleep还没有返回。 我启动了jconsole并获得有关该线程的信息。 Name: Thread-3 State: TIMED_WAITING Total blocked: 2 Total waited: 2,820 Stack trace: java.lang.Thread.sleep(Native Method) xc.mst.scheduling.Scheduler.run(Scheduler.java:400) java.lang.Thread.run(Thread.java:662) Scheduler.java:400是上面的Thread.sleep行。 按照我的预期,jconsole输出不会每秒增加“Total wait”。 事实上,它根本没有变化。 […]