我正在使用滑块构建电梯模拟器。我需要同时移动“电梯”,因此我考虑使用线程,但是我的知识是基于此主题的。 ;)我让电梯通过螺纹移动(请参见下面的代码),但我只能选择将特定的电梯移动到一层(例如,从4层移到10层),然后将电梯移到另一层(例如1层)如果我只是创建线程,电梯将尝试同时在两个方向上移动!所以我尝试检查线程名称是否已经存在,然后它只会朝一个方向移动。问题在于,它随后会忽略第二条命令向另一个方向移动。我认为这与以下事实有关:线程名称仍然存在,或者代码执行已移过第二个“命令”以移至第1层?请帮忙!
private void btnResetActionPerformed(java.awt.event.ActionEvent evt) {
moveLift(1, 10); //moves lift 1 to floor 10
moveLift(1, 1); //should move lift 1 to floor 1 from 10
moveLift(2, 10); //moves lift 2 to floor 10
}
private void moveLift(int liftNum, int floorNum) {
boolean b = false;
Set<Thread> threads = Thread.getAllStackTraces().keySet();
for (Thread t : threads) {
String name = t.getName();
if (name.equals("Lift" + liftNum)) {
b = true;
}
}
if (!b) {
MyThread mt = new MyThread(liftNum, floorNum);
mt.setName("Lift" + liftNum);
mt.start();
}
}
是否有任何关于将moveLift命令排队的建议,以使线程不会互相影响?