ConcurrentModificationException
このコードでは何が得られますか?私は、同期(リスナー)ロックを持っています。ConcurrentModificationExceptionを取得しましたが、削除しません。
private void notifyListeners(MediumRendition rendition) {
if (rendition == null) return;
synchronized (listeners) {
for (RenditionEventListener l : listeners) {
if (l.renditionType.equals(rendition.getType()) && l.mediumId == rendition.getMediumId()) {
l.listener.onRendition(rendition);
}
}
}
}
public void put(String renditionType, long mediumId, MediumRendition rendition) {
HashMap<Long, MediumRendition> l = list.get(renditionType);
if (l == null) {
l = new HashMap<Long, MediumRendition>();
list.put(renditionType, l);
}
l.put(mediumId, rendition);
notifyListeners(rendition);
}
public void addRenditionListener(String renditionType, long mediumId, RenditionListener listener) {
synchronized (listeners) {
listeners.add(new RenditionEventListener(renditionType, mediumId, listener));
}
}
1月30日16:47:55.147 6953 6974 E AndroidRuntime:致命的な例外:スレッド1 1月30日16:47:55.147 6953 6974 E AndroidRuntime:java.util.ConcurrentModificationExceptionが 1月30日16:47:55.147 6953 6974 E AndroidRuntime:java.util.ArrayList $ ArrayListIterator.next(ArrayList.java:573) 01-30 16:47:55.147 6953 6974 E AndroidRuntime:at com。 .vos.RenditionList.notifyListeners(RenditionList.java:79) 1月30日16:47:55.147 6953 6974 E AndroidRuntime:COM.T .vos.RenditionList.put(RenditionList.java:41) 1月30日に16:47:55.147 6953 6974 E AndroidRuntime:。。com * controllers.OmwController $ 6.run(OmwController.java:212)解決しよう
で:どうやら私は削除しました。下記参照。
['CME's(docs)](http://docs.oracle.com/javase/6/docs/api/java/util/ConcurrentModificationException.html)に起因する必要はありません。 *別のスレッド。 –
他にリスナーにアクセスするには?それはまた同期されますか? –
...そうだとすれば、ここにはどう? – user123321