我有一个服务器(线程),该服务器接收数据并具有一组客户端(套接字)。每当客户端连接时,都会创建一个新线程,并将新客户端添加到客户端阵列。
这是客户:
List<Socket> clients = Collections.synchronizedList(new ArrayList<Socket>());
因此,服务器将接收到的数据发送给客户端,如下所示:
//for each message:
for(Socket client : clients){ //throws java.util.ConcurrentModificationException
new PrintWriter(client.getOutputStream(), true).println(line);
}
现在这里有两个问题:
首先,当线程2添加客户端时,我偶尔会遇到java.util.ConcurrentModificationException。
另外,PrintWriter每次发送消息时,我都会创建一个新文件。另一个选择是PrintWriter为每个客户端存储一个,但是它是一个客户端,因此存储一个没有意义PrintWriter。
这是一个好方法吗?
互换的青春
三国纷争
相关分类