美文网首页
java使用交替锁实现线程安全的链表

java使用交替锁实现线程安全的链表

作者: 每天学点编程 | 来源:发表于2018-02-19 21:49 被阅读105次

请关注我的微信公众号

个人微信公众号

技术交流群 (仅作技术交流):642646237

​请关注我的头条号:

如何实现线程安全的链表

多线程环境下向链表中安全插入节点的方法:

  1. 锁住整个链表。
  2. 使用交替锁。只锁住链表的一部分,链表没有被锁住的部分自由访问。

交替锁如何实现安全的链表

插入新的链表节点时,需要将待插入位置两边的节点加锁。

首先锁住链表的前两个节点。
如果这两节点之间不是待插入位置,那么就解锁第一个节点,并锁住第三个节点。
如果被锁住的两节点之间仍不是待插入位置,就解锁第二个节点,并锁住第四个节点。
以此类推,直到找到待插入位置并插入新的节点,最后解锁两边的节点。

交替锁实现安全的链表 代码




这种方案可以让多个线程并发地进行链表插入操作,还能让其他的链表操作安全地并发。

交替锁实现的链表可以并发地执行统计节点数操作

链表统计操作和插入操作是否违反“全局顺序”规则?

不违反!
size()方法从不持有多把锁——其在某一时间并不持有一把以上的锁。

相关文章

  • java使用交替锁实现线程安全的链表

    请关注我的微信公众号 个人微信公众号 技术交流群 (仅作技术交流):642646237 ​请关注我的头条号: 如何...

  • JUC并发集合总结

    ConcurrentLinkedQueue 线程安全的支持高并发的队列,使用链表实现。非阻塞,无锁,无界。该队列也...

  • C链表

    互斥锁:链表用在多线程中保证顺序,多个线程会操作同一个链表,互斥锁保证多线程操作的安全,互斥锁分情况使用,链表并不...

  • 多线程juc锁

    java_basic 1 线程安全 在Java多线程编程当中,实现线程安全: 内部锁(Synchronized...

  • 夜深了,快睡吧-ConcurrentHashMap

    基本使用 运行结果 总结 父类 线程安全hashMap不是线程安全的,如果多线程使用则需手动自己实现锁 concu...

  • java基础

    Java中常见的线程安全类 通过synchronized 关键字给方法加上内置锁来实现线程安全Timer,Time...

  • iOS多线程面试题:如何使用两个线程交替打印1--100?

    使用两个线程交替打印奇偶数,需要用到锁来实现,下边有3种实现方式: 使用NSLock实现 使用NSConditio...

  • java锁知识点小记

    java锁的知识点小记:一.什么是线程安全:标准定义:多个线程访问一个对象,如果不用考虑这些线程的调度和交替执行,...

  • Java并发——别再问 ReentrantLock 的原理了

    说到并发,我们会马上想到锁,使用锁来保证各线程之间能够安全访问临界区以及非线程安全的数据。那为啥 Java 要提供...

  • 十二、线程安全的集合

    十二、线程安全的集合 除了使用锁来保护共享数据结构,也可以直接使用一些实现了线程安全的对象 常见的线程安全集合 线...

网友评论

      本文标题:java使用交替锁实现线程安全的链表

      本文链接:https://www.haomeiwen.com/subject/ujkitftx.html