Логика работы вентилятора

This commit is contained in:
2025-02-11 12:57:29 +03:00
parent 0c4644e6b7
commit 0e4b212f99
2 changed files with 30 additions and 2 deletions

View File

@@ -1,15 +1,39 @@
package ru.spbstu.telematics.java;
import java.util.Random;
/*
* Симулирует вентилятор, установленный в комнате. Может изменять поля комнаты,
* а именно - уменьшать влажность в ней.
*/
public class Fan implements Runnable {
Room room;
private boolean isOn;
private Room room;
public Fan(Room room) {
this.room = room;
}
private volatile boolean isOn;
public void turnOn() {
this.isOn = true;
}
public void turnOff() {
this.isOn = false;
}
private Random random = new Random();
private double humidityMaxStep = 1;
private long maxStepTimeMs = 3000;
@Override
public void run() {
while (!Thread.interrupted()) {
if (isOn)
room.adjustHumidity(-random.nextDouble() * humidityMaxStep);
Utils.sleepRandomTime((long) (maxStepTimeMs * 0.5), maxStepTimeMs);
}
}
}

View File

@@ -24,6 +24,10 @@ public class Room implements Runnable {
return humidity;
}
public synchronized void adjustHumidity(double delta) {
this.humidity += delta;
}
// Параметры произвольного изменения температуры и влажности в комнате
private Random random = new Random();
private double temperatureMaxStep = 1;