2013-09-06 5 views
0

HashMap을 반복하면서 ConcurrentModificationException을 가져 오는 중입니다.HashMap을 통해 반복하는 동안 ConcurrentModificationException

어떻게 해결할 수 있습니까?

public void stopAllPlaying(int fadeDurationInMs) 
{ 
    for(PlayThread thread : threadMap.values()) { 
     if(thread != null) { 
      thread.fadeOut(fadeDurationInMs); 
     } 
    } 
    threadMap.clear(); 
} 

UPDATE :

불행하게도 lock이 문제를 해결 한 것 같지 않습니다 사용.

내가 해시 맵이 수정되고 있던 모든 인스턴스에 잠금을 추가하는 데 필요한 : 나는

09-06 01:05:51.366: E/AndroidRuntime(1307): FATAL EXCEPTION: main 
09-06 01:05:51.366: E/AndroidRuntime(1307): java.util.ConcurrentModificationException 
09-06 01:05:51.366: E/AndroidRuntime(1307):  at java.util.HashMap$HashIterator.nextEntry(HashMap.java:796) 
09-06 01:05:51.366: E/AndroidRuntime(1307):  at java.util.HashMap$ValueIterator.next(HashMap.java:828) 
09-06 01:05:51.366: E/AndroidRuntime(1307):  at com.example.myapp.AudioTrackPlayer.stopAllPlaying(AudioTrackPlayer.java:141) 
09-06 01:05:51.366: E/AndroidRuntime(1307):  at com.example.myapp.MyApp.stopAllSounds(MyApp.java:119) 
09-06 01:05:51.366: E/AndroidRuntime(1307):  at com.example.myapp.MainActivity.stopPlayback(MainActivity.java:114) 
09-06 01:05:51.366: E/AndroidRuntime(1307):  at com.example.myapp.MainActivity.onConfigurationChanged(MainActivity.java:451) 
09-06 01:05:51.366: E/AndroidRuntime(1307):  at android.app.ActivityThread.performConfigurationChanged(ActivityThread.java:3397) 
09-06 01:05:51.366: E/AndroidRuntime(1307):  at android.app.ActivityThread.handleConfigurationChanged(ActivityThread.java:3542) 
09-06 01:05:51.366: E/AndroidRuntime(1307):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1121) 
09-06 01:05:51.366: E/AndroidRuntime(1307):  at android.os.Handler.dispatchMessage(Handler.java:99) 
09-06 01:05:51.366: E/AndroidRuntime(1307):  at android.os.Looper.loop(Looper.java:150) 
09-06 01:05:51.366: E/AndroidRuntime(1307):  at android.app.ActivityThread.main(ActivityThread.java:4263) 
09-06 01:05:51.366: E/AndroidRuntime(1307):  at java.lang.reflect.Method.invokeNative(Native Method) 
09-06 01:05:51.366: E/AndroidRuntime(1307):  at java.lang.reflect.Method.invoke(Method.java:507) 
09-06 01:05:51.366: E/AndroidRuntime(1307):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
09-06 01:05:51.366: E/AndroidRuntime(1307):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
09-06 01:05:51.366: E/AndroidRuntime(1307):  at dalvik.system.NativeStart.main(Native Method) 

업데이트 2 아래의 오류 메시지를 복사 한!

+0

동기화 기술을 시도해 보셨습니까? "동기화 된"키워드, 잠금, 세마포어, 아무것도? – Fildor

+0

업데이트 된 답변보기 나는 당신이 사용법을 놓친 것 같아요. – Fildor

답변

관련 문제