随笔分类 - Java 并发编程
摘要:突击并发编程JUC系列演示代码地址: https://github.com/mtcarpenter/JavaTutorial 什么是 CAS 吗? CAS(Compare And Swap)指比较并交换。CAS算法CAS(V, E, N)包含 3 个参数,V 表示要更新的变量,E 表示预期的值,N
阅读全文
摘要:突击并发编程JUC系列演示代码地址: https://github.com/mtcarpenter/JavaTutorial 本节让我们一起研究一下该容器是如何在保证线程安全的同时又能保证高效的操作。ConcurrentHashMap是线程安全且高效的HashMap。 为什么要使用Concurren
阅读全文
摘要:突击并发编程JUC系列演示代码地址: https://github.com/mtcarpenter/JavaTutorial Locksupport JDK 中的 rt.jar 包里面的 LockSupport 是个工具类,当需要阻塞或唤醒一个线程的时候,都可以使用 LockSupport 工具类来
阅读全文
摘要:ReadWriteLock 也是 `java 5`之后引入的,之前提到锁(如`Mutex`和`ReentrantLock`)基本都是排他锁,这些锁在同一时刻只允许一个线程进行访问,而读写锁在同一时刻可以允许多个读线程访问,但是在写线程访问时,所有的读线程和其他写线程均被阻塞。读写锁维护了一对锁,一个读锁和一个写锁,通过分离读锁和写锁,使得并发性相比一般的排他锁有了很大提升。
阅读全文
摘要:Lock 作为接口类为我们提供一组方法,只能通过的实现类进行 Lock 方法,今天我们就讲讲继承`Lock`接口一个可重入的独占锁 ReentrantLock 实现类,ReentrantLock 通过自定义队列同步器(Abstract Queued Sychronized,AQS)来实现锁的获取与释放。
阅读全文
摘要:突击并发编程JUC系列演示代码地址: https://github.com/mtcarpenter/JavaTutorial 俗话说趁热要打铁,上篇中介绍的 CountDownLatch 的基本用法, CountDownLatch 计数器是一次性的,也就是等到计数器值变为0后,再调用CountDow
阅读全文
摘要:CountDownLatch允许一个或多个线程等待其他线程完成操作。在日常开发中经常会遇到需要在主线程中开启多个线程去并行执行任务,并且主线程需要等待所有子线程执行完毕后再进行汇总的场景。
阅读全文
摘要:AtomicIntegerFieldUpdater 原子的更新某一个字段,AtomicStampedReference 可以用于解决JUC中的 ABA问题。
阅读全文
摘要:突击并发编程JUC系列演示代码地址: https://github.com/mtcarpenter/JavaTutorial 小伙伴们,大家好,我们又见面了,突击并发编程 JUC 系列实战原子引用马上就要发车了。 原子引用 AtomicReference 类提供了对象引用的非阻塞原子性读写操作,对比
阅读全文
摘要:突击并发编程JUC系列演示代码地址: https://github.com/mtcarpenter/JavaTutorial 上一个章节我们学习原子更新基本类型类,如果没有印象的小伙伴可以通过底部的链接回头看下,本章节主要介绍原子更新数组类型。 数组类型 数组类型就是通过原子的方式更新数组里的某个元
阅读全文