【发布时间】:2019-01-29 00:47:02
【问题描述】:
嘿,我正在用 Java 创建一个多人主题游戏。 我有多线程的服务器输入,现在我正在做服务器发送的东西。
我正在使用 ObjectOutputStream 发送对象,并且正在循环通过已连接客户端的列表。 我现在的问题是:如果我需要线程化这些发送,或者我可以保持我的系统循环通过客户端列表并只使用 write() 方法或者此方法是否有回调,因此互联网连接速度较慢或发送问题卡住或让循环变慢?
public void sendPacketToAllClients(JSONObject object) {
for(Client c:clients) {
c.sendPacket(object);
}
}
客户端的send方法包含:
oOs.writeObject(object);
【问题讨论】:
-
您必须自己回答这些问题。如果您的游戏是实时的(与朋友交谈),您绝对不希望玩家之间存在延迟。您不能循环访问客户端。最好在 pub-sub 模型中有监听线程。
-
循环不会导致延迟,除非循环大小非常大。
标签: java multithreading sockets server client