线程过多时延迟或不执行函数

Chí*_*yễn 1 java multithreading threadpool

我有一个基于 Java 的游戏服务器。1个用户需要使用2个线程来发送和接收数据。但是每当线程达到200-300个线程时,执行数据的功能就不再起作用了。服务器的CPU、RAM还没有满,大约只有15-20%。我尝试在用户断开连接时使用“垃圾收集器”,但这种情况仍然发生。谢谢你的帮助。抱歉我的英语不好。

Ank*_*rma 5

理想情况下,您的服务不应创建“太多线程”。选择使用 ExecutorService 的线程池。

您想要创建池的线程数取决于您所拥有的基础任务的类型。

从一般实践来看:

1:对于 CPU 密集型任务,线程数应等于

Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors());
Run Code Online (Sandbox Code Playgroud)

2:对于 IO 密集型任务,您可以创建比可用处理器数量更多的线程,因为如果 IO 任务花费很长时间,大多数线程将等待。