java.util.ConcurrentModificationException 多线程访问ArrayList引起

本文详细分析了Java中ConcurrentModificationException异常的原因,并提供了解决方案。通过具体案例讲解了如何避免该异常的发生,建议使用ConcurrentHashMap或CopyOnWriteArrayList来改善并发问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://blog.youkuaiyun.com/androiddevelop/article/details/21509345   Java ConcurrentModificationException 异常分析与解决方案

http://www.cnblogs.com/andy-zhou/p/5339683.html                  Java ConcurrentModificationException异常原因和解决方法

 

Process: com.android.systemui
Flags: 0x38c83e0d
Package: com.android.systemui v25 (7.1.1)
Foreground: No
Build: PROTRULY/DARLING-VR-PHONE/VR7-1:7.1.1/NMF26F/PROTRULY-VR7-7.1.1.100A:user/release-keys

java.util.ConcurrentModificationException
    at java.util.ArrayList$Itr.next(ArrayList.java:831)
    at com.android.systemui.statusbar.policy.KeyguardMonitor.notifyKeyguardChanged(KeyguardMonitor.java:130)
    at com.android.systemui.statusbar.policy.KeyguardMonitor.notifyKeyguardState(KeyguardMonitor.java:112)
    at com.android.systemui.statusbar.phone.PhoneStatusBar.updateKeyguardState(PhoneStatusBar.java:4767)
    at com.android.systemui.statusbar.phone.PhoneStatusBar.hideKeyguard(PhoneStatusBar.java:4636)
    at com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager.hide(StatusBarKeyguardViewManager.java:346)
    at com.android.systemui.keyguard.KeyguardViewMediator.handleStartKeyguardExitAnimation(KeyguardViewMediator.java:1806)
    at com.android.systemui.keyguard.KeyguardViewMediator.handleHide(KeyguardViewMediator.java:1762)
    at com.android.systemui.keyguard.KeyguardViewMediator.handleKeyguardDone(KeyguardViewMediator.java:1580)
    at com.android.systemui.keyguard.KeyguardViewMediator.-wrap5(KeyguardViewMediator.java)
    at com.android.systemui.keyguard.KeyguardViewMediator$4.handleMessage(KeyguardViewMediator.java:1498)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:154)
    at android.app.ActivityThread.main(ActivityThread.java:6140)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)

 

 

 

推荐使用ConcurrentHashMap或者CopyOnWriteArrayList

 

CopyOnWriteArrayList.java

 

 

CopyOnWriteArrayList注意事项

(1) CopyOnWriteArrayList不能使用Iterator.remove()进行删除。
(2) CopyOnWriteArrayList使用Iterator且使用List.remove(Object);会出现如下异常:
java.lang.UnsupportedOperationException: Unsupported operation remove
    at java.util.concurrent.CopyOnWriteArrayList$ListIteratorImpl.remove(CopyOnWriteArrayList.java:804)

转载于:https://www.cnblogs.com/onelikeone/p/7065076.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值