我目前正在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();
}
}