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