我有一个 WebSocket 服务器。
我的服务器创建一个新线程来处理新连接。该线程一直处于活动状态,直到 websocket 中断。
我的问题:对于 1_000_000 个连接,我需要 1_000_000 个线程。我如何通过一个线程处理多个 websocket?无需等待?
ServerSocket server;
private ExecutorService executor = new ThreadPoolExecutor(1_000_000 , 1_000_000 , 7, TimeUnit.SECONDS, queue, threadFactory);
try
{
server = new ServerSocket(port);
}
catch (IOException e) {}
while (true)
{
Socket client = null;
try
{
client = server.accept();
Runnable r = new Runnable()
{
run()
{
// this is simple, original is complete WebSocket imp
client.getInputStream().read();
}
};
executor.execute(r);
}
catch (IOException e) {}
}
你的观念是错误的。您不应该每隔几毫秒启动一个新线程,因为这会大大降低系统速度。此外,您不能同时打开 100 万个连接。任何正常的操作系统都不允许这样做。
相反,普通的 Web 服务器运行最大数量的线程(例如,平均服务器上有 100 个),这些线程顺序处理传入的请求。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)