【发布时间】:2011-12-06 19:48:06
【问题描述】:
我目前正在创建一个模拟程序来模拟客户在大型多人在线游戏的地图上移动。我必须有一个网格来表示包含客户端对象的地图。这些客户端必须在网格中随机移动,每个都与一个服务器对象通信。
目前我为每个客户端启动一个新线程,它在其服务器中调用一个方法,每秒具有随机的移动方向。
在我开始添加大量客户端(约 5000 个)之前,这一切正常,程序崩溃并出现“java.lang.OutOfMemoryError:无法创建新的本机线程”异常。
有没有另一种方法来处理如此大量的客户,而不是每个客户都是一个单独的线程?
谢谢,丹
【问题讨论】:
-
你有没有考虑过可能是使用线程差的库,看这里stackoverflow.com/questions/5148561/open-source-threadpool-lib
-
有很多方法。哪一个可能是最好的取决于你的目标是什么。如果服务器是您通过网络或本地进程与之通信的远程计算机。
标签: java multithreading client-server simulation