Подтвердить что ты не робот

Создание сна для случайного количества MS

Эй, у меня есть 3 потока, которые имеют определенные условия, когда они что-то распечатывают. это прекрасно работает. Теперь я хочу сделать поток прямо перед тем, как он выведет что-то, чтобы отправить его в сон для случайного количества мс. Я думал, используя математический класс, но не уверен, как.

случайный() должен генерировать случайное двойное число, большее или равное 0.0, и меньше 1.0 справа?

Я просто напишу что-то вроде

Thread.sleep(random());

^, который не работает, хотя попробовал его

4b9b3361

Ответ 1

Thread.sleep() принимает значение long не double. Вам понадобится тип:

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

Ответ 2

Thread.sleep() принимает значение long, которое представляет собой число миллисекунд, которые нужно спать. Передача значения с плавающей запятой между нулем и одним не будет работать, поскольку значение всегда будет усечено до нуля.

Чтобы исправить это, сгенерируйте случайное целое из соответствующего диапазона и перейдите к Thread.sleep().

Например, чтобы спать до секунды, используйте Thread.sleep(random.nextInt(1000));. Здесь random является объектом типа random.

Ответ 3

В коде есть две проблемы:

  • Наименьшее количество времени, которое вы можете sleep(), составляет 1 миллисекунду

  • Типы неверны: double vs. long.

Это будет работать:

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

Он будет спать в течение от 0 до 1000 миллисекунд.