使线程睡眠为随机量的MS

Tom*_*Tom 15 java concurrency multithreading

嘿所以我有3个线程,当他们打印出一些东西时有一定的条件.这很好用.我现在要做的是在线程输出之前将线程发送到睡眠状态以获得随机数量的ms.我在考虑使用数学课但不确定如何.

random()应该生成大于或等于0.0且小于1.0的随机double吗?

我会写点什么吗?

Thread.sleep(random());
Run Code Online (Sandbox Code Playgroud)

^尽管尝试了但是不起作用

Roh*_*ain 27

Thread.sleep()long值不double.你需要一个类型转换: -

Thread.sleep((long)(Math.random() * 1000));
Run Code Online (Sandbox Code Playgroud)


NPE*_*NPE 12

Thread.sleep()取一个long值,即睡眠的毫秒数.将浮点值传递到0和1之间将不起作用,因为该值将始终被截断为零.

要解决此问题,请从适当的范围生成随机整数,并将其传递给Thread.sleep().

例如,要睡几秒钟,请使用Thread.sleep(random.nextInt(1000));.这random是一个类型的对象Random.


Tom*_*icz 5

您的代码有两个问题:

  1. 最短的时间sleep()是1毫秒

  2. 类型不正确:doublevs long.

这将有效:

Thread.sleep((long)(Math.random() * 1000));
Run Code Online (Sandbox Code Playgroud)

它将睡眠0到1000毫秒之间的东西.