From 87d649931d9b5c26ebe05d488b7af04d1279f4d1 Mon Sep 17 00:00:00 2001 From: Air3 Date: Sat, 21 Mar 2020 17:15:58 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AC=AC=E4=B8=89=E5=91=A8=E4=BD=9C=E4=B8=9A-8?= =?UTF-8?q?5=E5=8F=B7:=20JMM=20AQS(AbstractQueuedSynchronizer)=20=E7=B1=BB?= =?UTF-8?q?=20ReentrantLock=20=E7=B1=BB=20Semaphore=20=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- second/week_03/85/AbstractQueuedSynchronizer.md | 14 ++++++++++++++ second/week_03/85/CountDownLatch.md | 8 ++++++++ second/week_03/85/JMM.md | 7 +++++++ second/week_03/85/ReentrantLock.md | 12 ++++++++++++ second/week_03/85/Semaphore.md | 7 +++++++ 5 files changed, 48 insertions(+) create mode 100644 second/week_03/85/AbstractQueuedSynchronizer.md create mode 100644 second/week_03/85/CountDownLatch.md create mode 100644 second/week_03/85/JMM.md create mode 100644 second/week_03/85/ReentrantLock.md create mode 100644 second/week_03/85/Semaphore.md diff --git a/second/week_03/85/AbstractQueuedSynchronizer.md b/second/week_03/85/AbstractQueuedSynchronizer.md new file mode 100644 index 0000000..707b7f5 --- /dev/null +++ b/second/week_03/85/AbstractQueuedSynchronizer.md @@ -0,0 +1,14 @@ +# AbstractQueuedSynchronizer + +[死磕 java同步系列之AQS起篇 by 彤哥读源码](https://mp.weixin.qq.com/s?__biz=Mzg2ODA0ODM0Nw==&mid=2247483929&idx=1&sn=5b1dbccdb8cc5900da5fa30830843be9&scene=21#wechat_redirect) +[Java同步框架AbstractQueuedSynchronizer - 简书](https://www.jianshu.com/p/853b203a8d93) +[AbstractQueuedSynchronizer 源码分析 (基于Java 8) - 简书](https://www.jianshu.com/p/e7659436538b) + + +# 理解: +AQS的全称是AbstractQueuedSynchronizer,它的定位是为Java中几乎所有的锁和同步器提供一个基础框架。 + +AQS是基于FIFO的队列实现的,并且内部维护了一个状态变量state,通过原子更新这个状态变量state即可以实现加锁解锁操作。 + +为后续的线程池队列,做好了基础同步队列框架. + diff --git a/second/week_03/85/CountDownLatch.md b/second/week_03/85/CountDownLatch.md new file mode 100644 index 0000000..567c163 --- /dev/null +++ b/second/week_03/85/CountDownLatch.md @@ -0,0 +1,8 @@ +# CountDownLatch + +[死磕 java同步系列之CountDownLatch源码解析 by 彤哥读源码](https://mp.weixin.qq.com/s?__biz=Mzg2ODA0ODM0Nw==&mid=2247483958&idx=1&sn=927fa0a477e012618437b22f88423318&scene=21#wechat_redirect) +[【死磕Java并发】-----J.U.C之并发工具类:CountDownLatch - 简书](https://www.jianshu.com/p/45ba45e41eaf) + +#总结: +只能初始化时,设定大小;每一个线程做完后调用countdown方法减1,可以用在,主线程做主线任务,开启支线任务去准备主线任务所需的要素和条件;等支线任务做完后,继续执行主线任务. + diff --git a/second/week_03/85/JMM.md b/second/week_03/85/JMM.md new file mode 100644 index 0000000..66d32ce --- /dev/null +++ b/second/week_03/85/JMM.md @@ -0,0 +1,7 @@ +#java内存模型 + +[死磕 java同步系列之JMM(Java Memory Model)](https://mp.weixin.qq.com/s?__biz=Mzg2ODA0ODM0Nw==&mid=2247483909&idx=1&sn=778c86bc63a350e9d8397e1a727aabf5&scene=21#wechat_redirect) + +#总结 +面试时会问JMM和JVM,还是不要搞混 +java内存模型之后还要在回顾加深理解,还要看jvm \ No newline at end of file diff --git a/second/week_03/85/ReentrantLock.md b/second/week_03/85/ReentrantLock.md new file mode 100644 index 0000000..582736a --- /dev/null +++ b/second/week_03/85/ReentrantLock.md @@ -0,0 +1,12 @@ +# ReentrantLock +1.[死磕 java同步系列之ReentrantLock源码解析(一)——公平锁、非公平锁](https://mp.weixin.qq.com/s?__biz=Mzg2ODA0ODM0Nw==&mid=2247483934&idx=1&sn=4c10ff923317ee9cfc6a5a5a96608d45&scene=21#wechat_redirect) + +2.[死磕 java同步系列之ReentrantLock源码解析(二)——条件锁](https://mp.weixin.qq.com/s?__biz=Mzg2ODA0ODM0Nw==&mid=2247483938&idx=1&sn=7b1ef5db771ca1c451c9a43b8f29afc4&scene=21#wechat_redirect) + +3.[死磕 java同步系列之ReentrantLock VS synchronized——结果有点出乎意外](https://mp.weixin.qq.com/s?__biz=Mzg2ODA0ODM0Nw==&mid=2247483942&idx=1&sn=d84d4f1ce49ac4d8f24203c474d481e7&scene=21#wechat_redirect) + +#总结: +ReentrantLock 分为公平锁和非公平锁,公平锁和非公平锁有区别和联系(获取锁的次数不一样,非公平锁是抢占式的获取锁);条件锁是子类condition来实现的,用在高并发时的业务场景不同,所采用的条件不一样 + + + diff --git a/second/week_03/85/Semaphore.md b/second/week_03/85/Semaphore.md new file mode 100644 index 0000000..baeb589 --- /dev/null +++ b/second/week_03/85/Semaphore.md @@ -0,0 +1,7 @@ +# Semaphore +[死磕 java同步系列之Semaphore源码解析](https://mp.weixin.qq.com/s?__biz=Mzg2ODA0ODM0Nw==&mid=2247483953&idx=1&sn=ad5479fcc52b996050ac5a4bfa95aaf3&scene=21#wechat_redirect) + + +#总结 +信号量 有点类似操作系统里的生产者和消费者锁; +也可以在限流和单一的互斥锁中应用 -- Gitee