那么怎么样的Java器,其中字符串是流动站/命令ID如果我理解它是正确的,那么你要启动系统并在运行时通,你的听众会传送到中心站 https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/Exchanger.html
流动站ID /命令通过一个监听器(它将在一个单独的线程中)处理后,传送到中央站(它将在一个单独的线程中)。
所以我怎么可能会这样做: 在主线程中,启动模拟器,创建一个Exchanger,并启动两个线程,一个用于中央工作站,另一个用于侦听器。
// pseudocode for main
main() {
// start simulator (I am not sure what this thing is)
Exchanger<String> exc = new Exchanger<String>();
new CentralStationThread(exc);
new CommandListenerThread(exc);
}
现在CentralStationThread的,你可能想要做的第一件事情之一就是与听众
//pseudocode for run method of central station
public void run(){
String roverIdToStop = exc.exchange(new String);
// some code to trigger the rover stop
// send in replacement rover
}
而且在CommandListenerThread螺纹类似的注册,但不会在启动
//pseudocode for run method of listener
public void run(){
// Listen to keyboard
// String roverIdOrCommand = Parse the command & make something out out it
// when the command is ready to be sent to central station do following
String roverIdToStop = exc.exchange(roverIdOrCommand);
// keep looking for further commands
}
我同意,可能有几种方法可以实现,但这是我想到的。希望能帮助到你 !
让现有的Java工具为您处理线程;请改用[关键侦听器](https://docs.oracle.com/javase/tutorial/uiswing/events/keylistener.html)。那么你只需要一个主线程,而不需要处理锁定等。 –
另外StackOverflow不是用于这些类型的_“是x可能吗?我该怎么做?”_问题 - 此社区是为取而代之的是帮助你解决算法/代码等问题。虽然你的问题写得很好,所以赞赏:) –