我目前正在为我的游戏开发网络,并正在运行客户端和服务器。服务器当前在另一个服务器中无限循环Thread
,但是我的客户端和游戏代码在同一线程中。当客户端正在处理来自服务器的数据时,我遇到了问题,并且游戏挂起,直到客户端完成了对新数据包的处理。
我试图通过使客户端类实现Runnable
并在单独的线程中运行来解决此问题。我遇到了其他一些错误,并且想知道这是否是问题。
我有run
方法,还有sendPacket
方法:
public void run() {
// empty
}
public void sendPacket() {
somePacketSendingCode();
}
该方法中没有代码run
,因为我仅使用该sendPacket
方法。sendPacket
接收到数据包时,由侦听器线程调用。
如果我的run
方法中没有代码,这是否意味着客户端Thread
在启动后停止执行?如果是这样,这是否意味着该sendPacket
方法将不执行任何操作?
如果您没有在sendPacket
方法内部调用该run
方法,则它将永远不会执行。线程一run
返回就停止。
请注意,只有run方法包含线程的实际代码。您在帖子中说您拥有该sendPacket
方法,并且仅在使用该方法。这意味着您实际上并没有在并行运行任何内容。调用时会触发并行线程start()
,这将run
异步调用该方法。仅调用sendPacket
不是并行性。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句