我正在开发一个网络游戏,一般来说:
我有一个服务器,它为连接到它的每个客户端启动一个 serverThread。
其目的是监听来自特定客户端的消息并在服务器上进行处理。
此外,对于打开的每个客户端,它都会启动一个 clientThread,它是来自服务器的消息的侦听线程。
这两个线程是非常简单且相似的线程,它们实现了 Runnable 接口,因此覆盖了 run 方法。
每个 Run 方法都是某种无限循环,在它的启动命令(阻塞命令):
int 命令 = m_In.readInt();
然后通过在接收到的命令上切换案例结构来执行一个过程。
处理完成后,循环导致代码返回阻塞 m_In.readInt()
以等待另一个命令的到来。
我的问题是:我的网络游戏有足够的选项使用这个 m_In 上的通信,所以如果有两条或更多条消息几乎一起到达 clientThread 会发生什么,dataInputStream 将如何行动?
它会开始处理第一条消息,并在完成后抓取第二条消息,它在某种队列上吗?或者它可能会丢弃第二条消息并且它会丢失?也许该流具有缓冲区,因此它将第二条消息存储在队列或其他东西中?
谢谢