From ee8988056ace451c45efca4785fed5002ca857a9 Mon Sep 17 00:00:00 2001 From: Arity-T Date: Tue, 11 Feb 2025 12:42:28 +0300 Subject: [PATCH] =?UTF-8?q?=D0=92=D1=8B=D0=BD=D0=B5=D1=81=20=D1=84=D1=83?= =?UTF-8?q?=D0=BD=D0=BA=D1=86=D0=B8=D0=B8=20=D0=B4=D0=BB=D1=8F=20=D1=81?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=BF=D0=BE=D1=82=D0=BE=D0=BA=D0=BE=D0=B2=20?= =?UTF-8?q?=D0=B2=20Utils?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ru/spbstu/telematics/java/Heater.java | 11 +--------- .../java/ru/spbstu/telematics/java/Room.java | 11 +--------- .../ru/spbstu/telematics/java/Sensor.java | 6 +----- .../java/ru/spbstu/telematics/java/Utils.java | 21 +++++++++++++++++++ 4 files changed, 24 insertions(+), 25 deletions(-) create mode 100644 lab3/src/main/java/ru/spbstu/telematics/java/Utils.java diff --git a/lab3/src/main/java/ru/spbstu/telematics/java/Heater.java b/lab3/src/main/java/ru/spbstu/telematics/java/Heater.java index 9f0699e..e633625 100644 --- a/lab3/src/main/java/ru/spbstu/telematics/java/Heater.java +++ b/lab3/src/main/java/ru/spbstu/telematics/java/Heater.java @@ -33,16 +33,7 @@ public class Heater implements Runnable { while (!Thread.interrupted()) { if (isOn) room.adjustTemperature(random.nextDouble() * temperatureMaxStep); - try { - Thread.sleep(getStepTime()); - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - } + Utils.sleepRandomTime((long) (maxStepTimeMs * 0.5), maxStepTimeMs); } } - - private long getStepTime() { - // Спим от 0.5 * maxStepTimeMs до maxSteTimeMs миллисекунд - return (long) (random.nextDouble() * 0.5 + 0.5) * maxStepTimeMs; - } } diff --git a/lab3/src/main/java/ru/spbstu/telematics/java/Room.java b/lab3/src/main/java/ru/spbstu/telematics/java/Room.java index b52a8aa..32579ae 100644 --- a/lab3/src/main/java/ru/spbstu/telematics/java/Room.java +++ b/lab3/src/main/java/ru/spbstu/telematics/java/Room.java @@ -37,16 +37,7 @@ public class Room implements Runnable { temperature += (random.nextDouble() - 0.5) * 2 * temperatureMaxStep; humidity += (random.nextDouble() - 0.5) * 2 * humidityMaxStep; - try { - Thread.sleep(getStepTime()); - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - } + Utils.sleepRandomTime((long) (maxStepTimeMs * 0.5), maxStepTimeMs); } } - - private long getStepTime() { - // Спим от 0.5 * maxStepTimeMs до maxSteTimeMs миллисекунд - return (long) (random.nextDouble() * 0.5 + 0.5) * maxStepTimeMs; - } } diff --git a/lab3/src/main/java/ru/spbstu/telematics/java/Sensor.java b/lab3/src/main/java/ru/spbstu/telematics/java/Sensor.java index c221ece..7667dab 100644 --- a/lab3/src/main/java/ru/spbstu/telematics/java/Sensor.java +++ b/lab3/src/main/java/ru/spbstu/telematics/java/Sensor.java @@ -40,11 +40,7 @@ public class Sensor implements Runnable { temperature = room.getTemperature() + (random.nextDouble() - 0.5) * 2 * maxTemperatureError; humidity = room.getHumidity() + (random.nextDouble() - 0.5) * 2 * maxHumidityError; - try { - Thread.sleep(updateIntervalMs); - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - } + Utils.sleep(updateIntervalMs); } } } diff --git a/lab3/src/main/java/ru/spbstu/telematics/java/Utils.java b/lab3/src/main/java/ru/spbstu/telematics/java/Utils.java new file mode 100644 index 0000000..01bedbd --- /dev/null +++ b/lab3/src/main/java/ru/spbstu/telematics/java/Utils.java @@ -0,0 +1,21 @@ +package ru.spbstu.telematics.java; + +import java.util.concurrent.ThreadLocalRandom; + +public class Utils { + static public void sleep(long millis) { + try { + Thread.sleep(millis); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + } + } + + static public void sleepRandomTime(long from, long to) { + try { + Thread.sleep(ThreadLocalRandom.current().nextLong(from, to)); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + } + } +}