我们仍在使用讨厌的机器人并且遇到了另一个问题(在解决了我们的包裹问题之后)。 我们有一个在线程中运行的机器人。他不断向前运行(move()方法)并检查currentDir变量是否已更改。如果它发生了变化,他会打另一种方法来面对新的方向。
我们的问题是我们必须以某种方式更改currentDir变量。我们想通过调用在线程中运行的机器人的setDir()方法来实现这一点。 事件发生后,由JButton触发调用此函数。 但我们无法设法中断线程来调用此方法。
是否有可能创建一个侦听器在线程中侦听由JButton触发的ActionEvent?
public void run()
{
//Infinite while-loop to check for the Direction of the robot
while(true)
{
if(currentDir != getDirection()) // if currentdir is not
{
if(currentDir == Direction.NORTH)
goNorth();
else if(currentDir == Direction.EAST)
goEast();
else if(currentDir == Direction.SOUTH)
goSouth();
else
goWest();
}
else
move();
}
}
答案 0 :(得分:0)
您不需要从同一个线程设置方向。如果您从侦听器中的UI线程设置它,则线程应该能够将其拾取。
您可能还想制作方向变量volatile
。 http://www.javamex.com/tutorials/synchronization_volatile_typical_use.shtml