![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并发编程
文章平均质量分 85
TTcccCarrie
这个作者很懒,什么都没留下…
展开
-
【并发编程】synchronized底层实现原理
synchronized原子性、可见性、有序性应用加锁的三种方式:1、普通同步方法,锁的是实例对象2、静态同步方法,锁的是当前类的对象。3、同步方法块,锁的是synchronized括号里的对象synchronized的字节码指令:对于同步块的实现使用了monitorenter和monitorexit指令,前面我 们在讲JMM的时候,提到过这两个指令,他们隐式的执行了Loc...原创 2019-07-31 21:31:58 · 272 阅读 · 0 评论 -
【并发编程】--CountDownLatch、CyclicBarrier、Semaphore
JUC中提供常用的并发工具类,CountDownLatch、CyclicBarrier、Semaphore。CountDownLatchcountdownlatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程的操作执行完毕再执行。从 命名可以解读到countdown是倒数的意思,类似于我们倒计时的概念。countdownlatch提供了两个方法,一个是countDown,一...原创 2019-07-31 21:34:28 · 293 阅读 · 0 评论 -
【并发的艺术】--同步锁-ReentrantLock底层实现原理
同步锁锁是控制多个线程访问共享资源的方式,一个锁防止多个线程同时访问共享资源。Lock接口出现之前,java程序只能依靠synchronized关键字来实现同步锁。在java5以后增加的JUC的并发包并且提供了lock接口用来实现锁的功能。提供与synchronized类似的功能,比synchronized更灵活,显示的获取和释放锁。Lock锁的初步使用Lock是一个接口,核心的两个方法...原创 2019-07-31 21:42:13 · 502 阅读 · 0 评论 -
【并发编程】--compareAndSet底层实现原理
compareAndSet实现原理compareAndSetHead private final boolean compareAndSetHead(Node update) { return unsafe.compareAndSwapObject(this, headOffset, null, update);}首先,用到了unsafe类,(Unsafe类是在sun.misc包下...原创 2019-07-31 21:43:21 · 1773 阅读 · 0 评论 -
【并发编程】--Condition底层实现原理
Conditionawait方法调用Condition的await()方法(或者以await开头的方法),会使当前线程进入等待队列并释放锁,同时线程状态变 为等待状态。当从await()方法返回时,当前线程一定获取了Condition相关联的锁。public final void await() throws InterruptedException { if (Thread...原创 2019-07-31 21:45:56 · 914 阅读 · 0 评论 -
【并发编程】--AQS实现原理
AQSlock之所以能实现线程安全的锁,主要的核心是AQS(AbstractQueuedSynchronizer),AQS提供了一个FIFO队列,可以用来实现锁以及需要同步功能的框架。称为AQS。AQS使用依靠继承来完成,子类通过继承自AQS并实现所需的方法来管理同步状态。ReentrantLock、CountDownLatch。AQS分为两种:独占和共享。独占锁模式下,每次只能有一...原创 2019-07-31 21:48:35 · 430 阅读 · 0 评论