【发布时间】:2012-11-22 22:10:25
【问题描述】:
我编写了一个带有多个线程的小型服务器。 很多小时后(据说目前我无法重现该问题)服务器停止工作。我的代码看起来像这样。
线程2:
while(true)
{
System.out.println("Point 1");
Socket abc = serverSocket.accept();
System.out.println("Point 2");
connection = true;
}
Thread1 在 Thread.sleep(1000) 循环中等待并检查连接是否为真。如果是这样,它开始工作,否则它打印“等待”。如果连接中止,则将连接设置为 false。
现在我的主程序连接到服务器。服务器打印 等待 等待 (依此类推,直到建立连接) 第 1 点 第 2 点 应该的。
现在经过几个小时的运行,我的客户端仍然可以连接,它说连接已建立(通过 clientSocket = new Socket(inetAddress,Integer.parseInt(port)); 假设此命令成功时无异常建立连接)。
在运行 Thread1 多个小时后,无论我与客户端连接的频率如何,都只会打印“等待”、“等待”。 我被它难住了,因为它只有在运行多个小时后才会发生。 Java版本是 java版本“1.7.0_07” Java(TM) SE 运行时环境 (build 1.7.0_07-b10) 此版本是否有任何已知问题或错误在哪里?任何线索如何重现错误?
感谢您的帮助。
【问题讨论】:
-
您是否考虑过进行线程转储或在调试器中运行服务器以获取有关正在发生的事情的更多信息?
-
现在。问题1是服务器在另一台机器上作为开发机器运行。问题 2 我发现无法在 eclipse 调试器中暂停线程,然后向我展示它现在执行的位置。那可能吗?如果是这样,您能否发布一个指向该说明的链接?
-
现在我设法用 Eclipse 进行了调试。服务器现在在开发机器上运行。让我们希望问题再次发生,我能够调试它。
标签: java serversocket