Java多线程网络,好还是坏?

标签 java multithreading sockets

我运行多个游戏服务器,我想开发一个自定义应用程序来管理它们。基本上所有的游戏服务器都会连接到应用程序来交换数据。我不希望任何数据丢失,所以我认为最好使用 TCP。我研究了网络并了解它是如何工作的,但是我有一个关于 cpu 使用情况的问题。更多服务器正在添加中,在接下来的几个月内可能会达到 100 - 200 台左右,并将根据需要继续增长。每个服务器的新线程会使用大量CPU吗?这样做是个好主意吗?有人对如何解决这个问题有任何建议吗?谢谢。

最佳答案

你应该看看非阻塞 io。使用阻塞io,每个socket将消耗1个线程,系统中的线程数量是有限的。即使您可以创建 1000 多个,这也是一个值得怀疑的方法。

使用非阻塞 io,您可以使用单个线程来服务多个套接字。这是一种更具可扩展性的方法+您可以控制在任何给定时刻运行的线程数量。

关于Java多线程网络,好还是坏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22545421/

相关文章:

java - 服务器客户端通信卡住`[命令提示符]

java - 正确管理 JavaFX 中的线程

c# - ThreadPool.RegisterWaitForSingleObject 的正确实现方式

c++ - 在哪种情况下 UDP 套接字上的 sendto() 返回 0?

iphone - 检测代码是否在 Objective-C 的主线程上运行的正确方法是什么? (iOS)

c++ - 使用线程处理信号和槽

Java客户端服务器聊天程序

java - java中框布局行中的面板居中

java - Eclipse EMF - 有没有一种方法可以在不同的 Eclipse 插件中引用属于模型一部分的类,而无需存储 tostring()?

java - <identifier> Java 中的预期编译错误[3]