
JAVA锁
啦啦啦·
这个作者很懒,什么都没留下…
展开
-
AbstractQueuedSynchronizer
AbstractQueuedSynchronizer lock相关操作 public final void acquire(int arg) 这个函数的作用是获取同一时间段只能被一个线程获取的量,这个量就是抽象化的锁的概念 首先会执行tryAcquire方法尝试获取“锁”,如果获取到了就没事了,如果没有获取到会执行下面的操作 如果没有获取到“锁”会执行addWaiter方法,会给当前线程创建...原创 2020-03-08 00:15:48 · 153 阅读 · 0 评论 -
volatile关键字
volatile简介 Java中可以使用Synchronized关键字来实现同步,但是在并发量高的时候,对资源的激烈竞争会使Synchronized升级为重量级锁(JDK1.5引进的升级机制),严重影响性能。而volatile是Java提供的,最轻量级的同步控制方式。 通过JMM,我们可以知道在多个线程操作同一共享数据时,会先把主内存中的共享数据拷贝到自己的工作内存中,执行引擎会基于工作内存中...原创 2019-04-15 20:09:43 · 126 阅读 · 0 评论 -
CAS(比较与交换,Compare and swap)算法
CAS算法思想: 三个参数,一个当前内存的值V、旧的预期值A、即将更新的值B,当且仅当预期值A和内存值V相同时,将内存值修改为B并返回true,否则什么都不做,并返回false。 CAS是项乐观锁技术,当多个线程尝试使用CAS同时更新同一个变量时,只有其中一个线程能更新变量的值,而其它线程都失败,失败的线程并不会被挂起,而是被告知这次竞争中失败,并可以再次尝试。 简单C实现: int c...原创 2019-04-15 00:15:29 · 2098 阅读 · 2 评论