我创建了一个套接字程序,我在其中创建了两个不同的线程。第一个线程尝试接受传入的套接字连接,并在建立新的套接字连接时启动其他线程。第二个线程是使用以下代码检查套接字连接是否已关闭:
PrintWriter out = new PrintWriter(socket.getOutputStream());
out.println("check error");
if(out.checkError())
{
//connection closed
}
现在每当我尝试将套接字用于不同的操作目的时,例如获取在远程机器上运行的进程列表,第二个线程就会阻塞程序,程序进入无响应状态。
我已通过互联网检查synchronized
阻止但未找到任何有用信息。谁能告诉我怎样才能解决这个问题?
修改
我发现人们不明白我在这里要说的是工作流程
1.将创建服务器,该服务器启动一个持续查找传入套接字连接的线程。它可以是很多连接
2.建立连接后,每个连接都将存储到HashMap
。将相同的套接字对象传递给另一个检查连接是否关闭的线程
3.同时,如果我尝试将相同的Socket对象用于不同目的,则程序进入无响应状态。