Ответ 1
Thread.sleep()
принимает значение long
не double
. Вам понадобится тип:
Thread.sleep((long)(Math.random() * 1000));
Эй, у меня есть 3 потока, которые имеют определенные условия, когда они что-то распечатывают. это прекрасно работает. Теперь я хочу сделать поток прямо перед тем, как он выведет что-то, чтобы отправить его в сон для случайного количества мс. Я думал, используя математический класс, но не уверен, как.
случайный() должен генерировать случайное двойное число, большее или равное 0.0, и меньше 1.0 справа?
Я просто напишу что-то вроде
Thread.sleep(random());
^, который не работает, хотя попробовал его
Thread.sleep()
принимает значение long
не double
. Вам понадобится тип:
Thread.sleep((long)(Math.random() * 1000));
Thread.sleep()
принимает значение long
, которое представляет собой число миллисекунд, которые нужно спать. Передача значения с плавающей запятой между нулем и одним не будет работать, поскольку значение всегда будет усечено до нуля.
Чтобы исправить это, сгенерируйте случайное целое из соответствующего диапазона и перейдите к Thread.sleep()
.
Например, чтобы спать до секунды, используйте Thread.sleep(random.nextInt(1000));
. Здесь random
является объектом типа random
.
В коде есть две проблемы:
Наименьшее количество времени, которое вы можете sleep()
, составляет 1 миллисекунду
Типы неверны: double
vs. long
.
Это будет работать:
Thread.sleep((long)(Math.random() * 1000));
Он будет спать в течение от 0 до 1000 миллисекунд.