下面的方法在'Controller'类的主线程上运行。它向服务器发送请求包以获取设备列表。
public List<Device> getDeviceList(){
networkServer.sendMsg(deviceListReqPacket);
//wait till response returns. ???
}
此方法在“Server”类中的另一个线程上运行,该类从服务器读取数据。
private void readDeviceList() {
// read packet from socket
List<nwkDeviceInfo_t> listdevice = networkServerDriver.getDeviceLists(packet);
}
}
如何使getDeviceList()方法等到,readDeviceList()方法构造listDevice.And获取listDevice对象?我有点困惑。我在尝试一些不可能的事情,或者我是以完全错误的方式做事?
答案 0 :(得分:0)
如果您的实例(上述类)在同一个JVM上但在不同的线程中运行,请使用Java附带的blocking queues之一。 如果它们通过网络进行通信(例如HTTP等),则看起来读取将被阻塞,直到写入完成(并且实际上在另一侧接收)。因此,在这种情况下,您已经拥有了所需的行为。