Логика работы вентилятора
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user