Логика работы вентилятора
This commit is contained in:
@@ -1,15 +1,39 @@
|
|||||||
package ru.spbstu.telematics.java;
|
package ru.spbstu.telematics.java;
|
||||||
|
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Симулирует вентилятор, установленный в комнате. Может изменять поля комнаты,
|
* Симулирует вентилятор, установленный в комнате. Может изменять поля комнаты,
|
||||||
* а именно - уменьшать влажность в ней.
|
* а именно - уменьшать влажность в ней.
|
||||||
*/
|
*/
|
||||||
public class Fan implements Runnable {
|
public class Fan implements Runnable {
|
||||||
Room room;
|
private Room room;
|
||||||
private boolean isOn;
|
|
||||||
|
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
|
@Override
|
||||||
public void run() {
|
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;
|
return humidity;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public synchronized void adjustHumidity(double delta) {
|
||||||
|
this.humidity += delta;
|
||||||
|
}
|
||||||
|
|
||||||
// Параметры произвольного изменения температуры и влажности в комнате
|
// Параметры произвольного изменения температуры и влажности в комнате
|
||||||
private Random random = new Random();
|
private Random random = new Random();
|
||||||
private double temperatureMaxStep = 1;
|
private double temperatureMaxStep = 1;
|
||||||
|
|||||||
Reference in New Issue
Block a user