В настоящее время я программирую на Lego NXT 2.0
с прошивкой leJOS 0.9.1 beta
.
У меня есть несколько разных датчиков, таких как датчик цвета и ультразвуковой датчик.
Я использую цикл while, чтобы заставить робота двигаться вперед, пока он не упрется в стену. Однако по какой-то причине мне не нравится этот подход, и вместо этого я хотел реализовать слушателя. Однако разработчик leJOS написал, что использование модели прослушивателя не рекомендуется, и вместо этого я должен использовать потоки для опроса значения ультразвукового датчика.
Теперь мне интересно, насколько плоха реализация с циклом while на самом деле (с точки зрения операционной системы, например, в трате ресурсов) и как потоковая модель была бы более выгодной (и реализованной)?
MWE:
public class SensorTest {
static UltrasonicSensor sonic;
static DifferentialPilot pilot;
public static final int DISTANCE = 20;
public static void main(String[] args){
sonic = new UltrasonicSensor(SensorPort.S1);
pilot = new DifferentialPilot(8.5, 25, Motor.C, Motor.B);
int i = 0;
while (i < DISTANCE) {
pilot.forward();
i = sonic.getDistance();
}
pilot.stop();
}
}