У меня есть HashMap с адресами и именами клиентов, которые назначены на сервере. Когда пользователь выходит из системы, все получают сообщение о его отъезде, а затем я
удалить его из HashMap.
Проблема в том, что я перебираю HashMap, чтобы отправить всем сообщение, которое я использую
поток и в результате пользователи удаляются до того, как произойдет итерация, поэтому он не получает сообщение.
Я попробовал Hashtable, ConcurrentHashMap напрасно.
Когда я пропускаю линию удаления, это работает.
Как я могу избежать этого, могу ли я использовать карту другого типа;
private HashMap<InetAddress, String> users = new HashMap<InetAddress, String>();
.
,
.
UDPServerSender sender = new UDPServerSender(str, address, true);
sender.start();
users.remove(address);
.
,
.
public class UDPServerSender extends Thread {
@Override
public void run() {
iterator = users.keySet().iterator();
while (iterator.hasNext()) {
InetAddress inetaddress = (InetAddress) iterator.next();
Я подумал, что могу отправить отдельное сообщение подписавшимся пользователям.