java - ServerSocket.accept 给了我多个连接,尽管我只连接一次

标签 java sockets executorservice serversocket

我有一个 ExecutorService,它为每个连接创建一个新线程:

boolean running;
Socket socket;
ExecutorService executorService= Executors.newCachedThreadPool();
ss=new ServerSocket(port);
while(running){
        socket=ss.accept();
        executorService.submit(new ConnectionThread(socket));
        }

ConnectionThread 构造函数如下所示,run 方法太长,无法在此处发布:

Socket socket;
ConnectionThread(Socket socket){
            System.out.println("connectionThread running...");
            this.socket=socket;
        }

当我在浏览器中刷新页面时,ConnectionThread 构造函数告诉我已创建多个线程。为什么会发生这种情况?

最佳答案

发生这种情况是因为浏览器出于不同目的打开了多个 TCP 连接。

关于java - ServerSocket.accept 给了我多个连接,尽管我只连接一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60018864/

相关文章:

Java:使用字符串作为源代码的一部分

java - 如何检查图 block 的碰撞以及如何使用 java 和 libgdx 在其上添加条件

java - 删除数据库中的行

linux - 我们能否以某种自动方式设置用于监听的端口号而不是对其进行硬编码?

Java:Runnable 和方法的执行。他们应该在哪里?这有关系吗?

java - Thawte 签名的 jar 文件在 Micromax 移动版中不起作用?

node.js - 如何使用sendHandle不丢失数据?

c - 固定超时后退出recv循环

java - 通过 executorservice 进行顺序事件处理

java - 使用 ExecutorService 时,线程内的类是否安全?