1.简介 1.1 作用 在并发场景中,保证同一时刻只有一个线程对有并发隐患的代码进行操作 1.2 错误案例 需求:两个线程对 count 变量进行200000次循环增加,预期结果是400000次 pu……继续阅读 » 4年前 (2021-04-07) 2922浏览 0评论1657个赞
1.错误案例 通过一个案例引出volatile关键字,例如以下代码示例 : 此时没有加volatile关键字两个线程间的通讯就会有问题 public class ThreadsShare { priv……继续阅读 » 4年前 (2021-04-07) 1674浏览 0评论1083个赞
1. 存在的意义 AQS(AbstractQueuedSynchronizer)是JAVA中众多锁以及并发工具的基础,其底层采用乐观锁,大量使用了CAS操作, 并且在冲突时,采用自旋方式重试,以实现轻……继续阅读 » 4年前 (2021-03-26) 2448浏览 0评论341个赞
1.为什么需要Lock 为什么synchronized不够用,还需要Lock Lock和synchronized这两个最常见的锁都可以达到线程安全的目的,但是功能上有很大不同。 Lock并不是用来代替……继续阅读 » 4年前 (2021-03-26) 1813浏览 0评论2058个赞
1. 条件队列的意义 Condition将Object监控器方法( wait , notify和notifyAll )分解为不同的对象,从而通过与任意Lock实现结合使用,从而使每个对象具有多个等待集……继续阅读 » 4年前 (2021-01-27) 2619浏览 0评论2221个赞
1. 用法 1.1 定义一个安全的list集合 public class LockDemo { ArrayList<Integer> arrayList = new ArrayList&l……继续阅读 » 4年前 (2021-01-22) 1737浏览 0评论2100个赞