使线程睡眠为随机量的MS

时间:2012-11-28 20:08:34

标签: java multithreading concurrency

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

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

我会写一些像

这样的东西
Thread.sleep(random());

^虽然尝试了但是没有用

3 个答案:

答案 0 :(得分:24)

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

Thread.sleep((long)(Math.random() * 1000));

答案 1 :(得分:10)

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

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

例如,要睡眠最多一秒,请使用Thread.sleep(random.nextInt(1000));。这里,randomRandom类型的对象。

答案 2 :(得分:5)

您的代码存在两个问题:

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

  2. 类型不正确:doublelong

  3. 这将有效:

    Thread.sleep((long)(Math.random() * 1000));
    

    它会在0到1000毫秒之间睡眠。