【问题标题】:Making Thread sleep for random amount of MS使线程睡眠随机数量的 MS
【发布时间】:2012-11-28 20:08:33
【问题描述】:
嘿,所以我有 3 个线程,它们在打印出某些东西时具有一定的条件。这很好用。我现在想要做的是在线程输出一些东西之前让它进入睡眠状态随机数量的毫秒。我正在考虑使用数学课,但不确定如何。
random() 应该生成大于或等于 0.0 且小于 1.0 的随机双精度数对吗?
我会写一些类似的东西
Thread.sleep(random());
^ 试过了还是不行
【问题讨论】:
标签:
java
multithreading
concurrency
【解决方案1】:
Thread.sleep() 采用 long 值而不是 double。您需要在这里进行类型转换:-
Thread.sleep((long)(Math.random() * 1000));
【解决方案2】:
Thread.sleep() 采用 long 值,即休眠的毫秒数。在 0 和 1 之间传递浮点值是行不通的,因为该值总是会被截断为零。
要解决此问题,请从适当范围内生成一个随机整数,并将其传递给Thread.sleep()。
例如,要休眠一秒钟,请使用Thread.sleep(random.nextInt(1000));。这里,random 是 Random 类型的对象。
【解决方案3】:
你的代码有两个问题:
sleep() 的最短时间是 1 毫秒
类型不正确:double 与 long。
这将起作用:
Thread.sleep((long)(Math.random() * 1000));
它将休眠 0 到 1000 毫秒。