gpt4 book ai didi

Java-Server 停止正常工作

转载 作者:行者123 更新时间:2023-12-01 04:59:55 26 4
gpt4 key购买 nike

我编写了一个具有多个线程的小型服务器。几个小时后(据说目前我无法重现该问题)服务器停止工作。我的代码看起来像这样。

线程2:

while(true)
{

System.out.println("Point 1");
Socket abc = serverSocket.accept();
System.out.println("Point 2");
connection = true;
}

Thread1 在 Thread.sleep(1000) 循环中等待并检查连接是否为 true。如果是,则开始工作,否则打印“等待”。如果连接中止,它将连接设置为 false。

现在我的主程序连接到服务器。服务器打印等待等待(依此类推,直到建立连接)第1点第2点正如它应该的那样。

现在,在运行多个小时后,我的客户端仍然可以连接,它说连接已建立(通过 clientSocket = new Socket(inetAddress,Integer.parseInt(port)) 完成;假设此命令成功时建立连接,没有异常)。

运行 Thread1 多个小时后,无论我与客户端连接的频率如何,都只会打印“等待”、“等待”。我对此感到困惑,因为它只有在运行多个小时后才会发生。 Java版本是java版本“1.7.0_07”Java(TM) SE 运行时环境(版本 1.7.0_07-b10)此版本是否存在任何已知问题或哪里可能出现错误?有任何线索如何重现错误吗?

感谢您的帮助。

最佳答案

如果您不同步对 connection 字段的访问,并且该字段不是 volatile 字段,则某个 Thread1 可能看不到该 connection Thread2 中发生了变化。就是这样Java Memory Model有效。

关于Java-Server 停止正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13520640/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com