Android并发修改异常:java.util.ConcurrentModificationException

简介: Android并发修改异常:java.util.ConcurrentModificationException

1.异常原因:


网上很多出现并发修改异常的情况都是和集合有关,而我的情况是在将Activity清除出栈的时候出现的异常,其他的情况暂未遇到,碰到再更新。


2.分析解决:


我在之前的《 如何在本Activity页面退出后回到首页或者指定的Activity入口》中提到会出现并发修改异常的情况:我从A 主页--> B --> C --> D 页面,当想结束当前页面,直接回到A页面时,就需要将B、C 清除出任务栈,但在清除时若只是finish当前页面显然是不能直接回到A页面的,直接跳转的方式更不可取,会出现很多个Activity,造成很多问题。用我在该文内的工具类时,必须按顺序先清除C,再清除B;若中间BC不清,或者只有C忘记清除的情况下都会造成异常 java.util.ConcurrentModificationException。(注:这里只是举个例子,这样操作就会造成并发修改异常。)


3.个人理解(此部分仅供参考,纯属个人经验之谈,未必准确。):


以上造成并发修改异常的原因主要与activity的任务栈有关(具体任务栈原理,请大家自行找资料学习)。根据任务栈“后进先出”的特点,D处在当前任务栈的栈顶,想找到A,必须按顺序清除中间的C、B;不能跳过B、C直接找到A,更不可能跳过C去直接清除B。对任务栈内的元素进行操作,需理解其原理,根据其特点进行添加或者删除操作,避免发生类似的异常java.util.ConcurrentModificationException。


4.出现异常的部分代码示例:(示例全部代码)

/**
 * @author 诺诺
 * 
 */
public class EActivity extends Activity {
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    AppManager.getAppManager().addActivity(this);
    TextView tv = (TextView) findViewById(R.id.tv);
    tv.setText("返回首页");
    tv.setOnClickListener(new OnClickListener() {
      @Override
      public void onClick(View v) {
        AppManager.getAppManager().finishActivity(DActivity.class);
        // AppManager.getAppManager().finishActivity(CActivity.class);
        AppManager.getAppManager().finishActivity(BActivity.class);
        finish();
      }
    });
  }
}
目录
相关文章
|
2月前
|
Java 大数据 Go
从混沌到秩序:Java共享内存模型如何通过显式约束驯服并发?
并发编程旨在混乱中建立秩序。本文对比Java共享内存模型与Golang消息传递模型,剖析显式同步与隐式因果的哲学差异,揭示happens-before等机制如何保障内存可见性与数据一致性,展现两大范式的深层分野。(238字)
85 4
|
2月前
|
缓存 安全 Java
如何理解Java中的并发?
Java并发指多任务交替执行,提升资源利用率与响应速度。通过线程实现,涉及线程安全、可见性、原子性等问题,需用synchronized、volatile、线程池及并发工具类解决,是高并发系统开发的关键基础。(238字)
234 4
|
3月前
|
存储 消息中间件 人工智能
【08】AI辅助编程完整的安卓二次商业实战-修改消息聊天框背景色-触发聊天让程序异常终止bug牵涉更多聊天消息发送优化处理-优雅草卓伊凡
【08】AI辅助编程完整的安卓二次商业实战-修改消息聊天框背景色-触发聊天让程序异常终止bug牵涉更多聊天消息发送优化处理-优雅草卓伊凡
272 10
【08】AI辅助编程完整的安卓二次商业实战-修改消息聊天框背景色-触发聊天让程序异常终止bug牵涉更多聊天消息发送优化处理-优雅草卓伊凡
|
5月前
|
Java API 调度
从阻塞到畅通:Java虚拟线程开启并发新纪元
从阻塞到畅通:Java虚拟线程开启并发新纪元
366 83
|
5月前
|
存储 Java 调度
Java虚拟线程:轻量级并发的革命性突破
Java虚拟线程:轻量级并发的革命性突破
342 83
|
8月前
|
消息中间件 算法 安全
JUC并发—1.Java集合包底层源码剖析
本文主要对JDK中的集合包源码进行了剖析。
|
7月前
|
机器学习/深度学习 消息中间件 存储
【高薪程序员必看】万字长文拆解Java并发编程!(9-2):并发工具-线程池
🌟 ​大家好,我是摘星!​ 🌟今天为大家带来的是并发编程中的强力并发工具-线程池,废话不多说让我们直接开始。
267 0
|
5月前
|
SQL 缓存 安全
深度理解 Java 内存模型:从并发基石到实践应用
本文深入解析 Java 内存模型(JMM),涵盖其在并发编程中的核心作用与实践应用。内容包括 JMM 解决的可见性、原子性和有序性问题,线程与内存的交互机制,volatile、synchronized 和 happens-before 等关键机制的使用,以及在单例模式、线程通信等场景中的实战案例。同时,还介绍了常见并发 Bug 的排查与解决方案,帮助开发者写出高效、线程安全的 Java 程序。
256 0
|
6月前
|
Java 物联网 数据处理
Java Solon v3.2.0 史上最强性能优化版本发布 并发能力提升 700% 内存占用节省 50%
Java Solon v3.2.0 是一款性能卓越的后端开发框架,新版本并发性能提升700%,内存占用节省50%。本文将从核心特性(如事件驱动模型与内存优化)、技术方案示例(Web应用搭建与数据库集成)到实际应用案例(电商平台与物联网平台)全面解析其优势与使用方法。通过简单代码示例和真实场景展示,帮助开发者快速掌握并应用于项目中,大幅提升系统性能与资源利用率。
198 6
Java Solon v3.2.0 史上最强性能优化版本发布 并发能力提升 700% 内存占用节省 50%