![]() |
1
1
假设问题是不正确的并发性,一个好的解决方案是在onlineusertracker中包装与列表的所有交互,然后同步相关的方法(这意味着任何方法都不应该返回底层列表)。事实上,不管您如何解决问题,最好不要将列表公开给OnlineUserTracker之外的代码(即封装)。 一个“简单”的解决方案是使列表成为copyonwritearraylist的实例。对于正常的交互和迭代,这个实现是线程安全的。但是,如果您经常添加或删除用户,则可能效率较低。 |
![]() |
2
0
所以从我的观点来看,很多事情都可能出错。 但如果你得到了arraylist,你说它的大小是-1。那是威德。 list.size()不应返回负值。 另一方面,如果您试图获取列表中对象的索引,而该对象不在该列表中,则可能会发生这种情况… 很可能就是这样。其原因可能是从其他线程访问该列表并在indexof()方法调用之前将其删除。或者向服务器发送两个请求。第二个请求显然会产生这样的问题:) |