`
yizhilong28
  • 浏览: 232888 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

LinkedList多线程不安全的解决办法

阅读更多
在batik源码中有多处使用到了LinkedList,而LinkedList是线程不安全的,
在多线程下遍历LinkedList,经常会抛出如下异常
        java.util.ConcurrentModificationException
at java.util.LinkedList$ListItr.checkForComodification(Unknown Source)
at java.util.LinkedList$ListItr.next(Unknown Source)
建议办法是:
将LinkedList全部换成ConcurrentLinkedQueue试试,LinkedList是线程不安全的。
有兴趣可以参考http://byline.ow2.org/ccm-core-6.1.0/api/com/arsdigita/developersupport/Comodifications.html
分享到:
评论

相关推荐

    Java集合多线程安全.docx

    然而,并非所有集合类都是线程安全的,这在多线程环境中可能导致数据不一致或者运行时异常。线程安全指的是一个对象在多线程环境下可以被正确地访问和修改,而不会出现竞态条件或死锁等问题。 线程不安全的集合类...

    Java的线程安全与不安全集合.docx

    线程安全意味着在多线程环境中,一个类或方法可以被正确地访问和修改,而不会导致数据不一致或错误。线程不安全则表示在多线程环境下,如果不采取额外的同步措施,就可能引发数据竞争和其他并发问题。 线程不安全...

    马士兵多线程训练营笔记

    4. **线程安全的数据结构**:Java集合框架中的线程安全类,如Vector、ArrayList、LinkedList、HashMap、ConcurrentHashMap的区别和使用场景。 5. **线程通信**:wait()、notify()、notifyAll()方法的使用,以及在...

    多线程及list使用.zip

    同时,掌握如何在多线程环境中正确地使用List,避免并发修改导致的数据不一致问题,例如使用CopyTo方法创建线程安全的副本,或者在修改List时使用lock语句进行同步。 总之,多线程和List是C#开发中不可或缺的部分。...

    对比Vector、ArrayList、LinkedList1

    - **线程安全**:Vector是线程安全的,因为它在每个公共方法上都添加了`synchronized`关键字,这意味着在多线程环境中,它的操作是线程安全的,但这也导致了其性能较低。 - **容量管理**:Vector内部使用对象数组...

    多线程中使用Java集合类.doc

    在多线程环境中,使用Java集合类需要注意线程安全问题,因为不同的线程可能会同时访问和修改集合,导致数据不一致或引发异常。本篇主要讨论在并发编程中使用Java集合类的一些关键知识点。 首先,Java集合框架中的大...

    实现多线程之间通讯第二节

    在Java编程语言中,多线程是...理解并正确使用这些方法是编写高效并发代码的基础,尤其是在处理共享资源和多线程同步时。在实际应用中,还需要注意异常处理、死锁预防、线程安全的数据结构等并发编程的其他重要概念。

    多线程集合及IO面试

    - **ArrayList**:基于动态数组实现,提供随机访问能力,不支持线程安全。 - **Vector**:同样基于动态数组实现,与`ArrayList`相似,但支持线程安全。 - **LinkedList**:基于双向链表实现,插入和删除操作更...

    java多线程实现生产者消费者关系

    在Java编程中,多线程是并发处理任务的关键技术,它可以极大地提高程序的执行效率。在实际应用中,我们常常会遇到一种典型的多线程问题——生产者消费者模型。这个模型描述了两种类型的线程:生产者线程负责创建或...

    由生产者/消费者问题看JAVA多线程

    ### 由生产者/消费者问题深入理解JAVA多线程 #### 生产者/消费者问题概述 生产者/消费者问题是一个经典的计算机科学问题,用于展示进程间的通信与同步问题。在这个模型中,生产者负责创建数据并将其放置到共享内存...

    java的一些图片,网络编程,多线程,数据结构

    线程同步是多线程编程中的关键问题,Java提供了`synchronized`关键字、`wait()`, `notify()`和`notifyAll()`方法以及`java.util.concurrent`包中的高级并发工具,如Semaphore、CountDownLatch、CyclicBarrier等,来...

    java面试多线程高并发相关回家技巧(超经典)

    3. **线程同步**:为了解决多线程环境中的数据安全问题,Java提供了synchronized关键字、volatile变量、Lock接口(如ReentrantLock)等同步机制。 二、线程控制 1. **线程的启动、暂停与停止**:start()方法启动...

    java基础(多线程,IO,集合,网络编程,泛型)

    本资源包“java基础(多线程,IO,集合,网络编程,泛型)”提供了对Java核心技术的全面介绍,包括五个核心主题:多线程、输入/输出(IO)、集合框架、网络编程和泛型。以下是对这些主题的详细讲解: 1. **多线程**: - ...

    java核心知识,集合,多线程

    7. **并发工具类**:如Semaphore(信号量)、CyclicBarrier(循环栅栏)、CountDownLatch(计数器门锁)等,为多线程编程提供了更多解决方案。 8. **Future和Callable**:Java 5引入的Future接口和Callable接口,...

    操作系统-java多线程实验.pdf

    3. **掌握多线程编程方法**:学习如何在Java中定义和启动线程,以及如何实现线程安全的代码。 **二、相关函数** 在Java中,有两种主要方式定义线程:继承`Thread`类或实现`Runnable`接口。下面是一个通过实现`...

    Java线程同步例子.pdf

    在Java中,线程同步是保证多线程安全访问共享资源的重要机制。多个线程在运行过程中,访问共享数据或者对共享数据进行修改,必须采用线程同步技术,以避免出现数据不一致的问题。根据提供的文件内容,我们可以看到一...

    JUC代码收集,java高并发多线程学习

    这个集合提供了一系列高效、线程安全的类和接口,用于简化多线程环境下的编程任务。本资源"JUC代码收集,java高并发多线程学习"显然是一个专注于探讨和学习JUC库的资料包。 JUC库包含多个子包,如`concurrent`, `...

    51. ArrayList LinkedList Set HashMap介绍.txt

    `Vector` 中的大部分方法都是同步的,可以在不加额外同步措施的情况下用于多线程环境。 - **性能**:由于 `Vector` 的同步机制,它的性能通常低于 `ArrayList`。除非特别需要线程安全性,否则推荐使用 `ArrayList`。...

    java定时器\多线程(池)\java队列Demo

    队列可以在多线程环境下安全地添加和移除元素,通常与 `ExecutorService` 结合使用,作为任务的提交和处理机制。 ```java Queue<Integer> queue = new LinkedList(); queue.add(1); // 添加元素 int value = queue....

    Java 集合中的类关于线程安全

    线程安全意味着在多线程环境下,一个类或方法可以被多个线程同时访问,而不会导致数据的不一致或错误。在Java中,集合类分为线程安全和非线程安全两类。 线程安全的集合类: 1. Vector:类似于ArrayList,但每个...

Global site tag (gtag.js) - Google Analytics