我需要了解不同用户案例场景下的相同操作。
对于Ex:有一个房间在那里。用户不断地进入房间并且及时离开房间。还有一个案例是用户没有尝试加入同一个房间。
如何处理java中的上述示例案例,如同步或其他任何内容。请建议我处理此问题的最佳案例?
我做了一个样本。请看下面的示例代码一次:
public class Sample{
private ArrayList<String> players = new ArrayList<String>();
public synchronized void joinRoom(String name)
{
players.add(name);
//Do something
}
public synchronized void leaveRoom(String name)
{
for(String uName : players){
if(uName.equals(name))
{
players.remove(uName);//Here is there any possibility to get concurrent modification exception.if gets how to solve
}
}
//Do something
}
}
但是我不知道案件的处理方式与使用上面的示例代码有关。请告诉我哪一个最适合处理这种情况?
先谢谢。
答案 0 :(得分:0)
你可以使用ConcurrentSkipListSet。它将为您处理所有同步并更有效地执行.ConcurrentSkipListSet允许并发读取和写入。
关于并发修改异常,请使用迭代器:
Iterator<String> iter = players.iterator();
while(iter.hasNext()){
if(iter.next().equals(name)){
iter.remove();
break;
}
}