![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
错觉_
这个作者很懒,什么都没留下…
展开
-
AQS源码解析
5.1初识AQSAQS的全称为(AbstractQueuedSynchronizer),这个类在java.util.concurrent.locks包下面。AQS是一个用来构建锁和同步器的框架,使用AQS能简单且高效地构造出应用广泛的大量的同步器,AQS核心思想是,如果被请求的共享资源空闲,则将当前请求资源的线程设置为有效的工作线程,并且将共享资源设置为锁定状态。如果被请求的共享资源被占用,...原创 2019-09-19 22:45:53 · 104 阅读 · 0 评论 -
阻塞队列总结
阻塞队列总结:1.LinkedBlockingQueueLinkedBlockingQueue 的内部是通过单向链表实现的,使用头、尾节点来进行入队和出队操作,也就是入队操作都是对尾节点进行操作,出队操作都是对头节点进行操作 。对头、尾节点的操作分别使用了单独的独占锁从而保证了原子性,所以出队和入队操作是可以同时进行的 。 另外对头 、 尾节点的独占锁都配备了一个条件队列,用来存放被阻塞的线程...原创 2019-09-30 14:11:20 · 123 阅读 · 0 评论 -
LinkedBlockingQueue
1.LinkedBlockingQueue是什么 ? LinkedBlockingQueue 也是使用单向链表实现的,可以当做无界队列也可以当做有界队列来使用。可以通过构造函数指定界限,,LinkedBlockingQueue默认是有界限的,默认队列容量为Integer.MAX_VALUE,用户也可以自己指定容量,所以从一定程 度上可以说 LinkedBlockingQueue 是有界阻塞队列...原创 2019-09-30 00:30:53 · 287 阅读 · 0 评论 -
ArrayBlockingQueue
1.ArrayBlockingQueue是什么? ArrayBlockingQueue使用有界数组方式实现的阻塞队列,其并发控制采用可重入锁来控制,不管是插入操作还是读取操作,都需要获取到锁才能进行操作。主要用到了可重入锁和condition图片参考https://www.javadoop.com/post/java-concurrent-queue2.ArrayBlockingQue...原创 2019-09-29 23:07:51 · 134 阅读 · 0 评论 -
ThreadLocal
1.ThreadLocal是什么? ThreadLocal 是 JDK 包提供的,它提供了线程本 地 变量 ,ThreadLocal是为每个线程创建一个单独的变量副本 。 故每个线程都看可以独立的改变自己所拥有的变量副本,而不会影响 其他 线程所对应的副本。ThreadLocal是无法解决共享变量更新的问题 的。在多线程环境下,每个线程ThreadLocal读写数据是隔离的。2.Thre...原创 2019-09-28 21:52:47 · 88 阅读 · 0 评论 -
CyclicBarrier
一、初识CyclicBarrier1.1是什么?字面的意思是可重复利用的栅栏,不是用了一次就没有用的。它是由ReentrantLock和Condition的组合使用。CyclicBarrier和CountDownLatch很像,只不是CyclicBarrier是可重复用的。CountDownLatch是基于AQS的Condition的等待队列来实现的。1.2怎么用public static...原创 2019-09-23 18:35:09 · 98 阅读 · 0 评论 -
CountDownLatch源码分析
2源码分析2.1构造方法需要传入一个不小于 0 的整数public CountDownLatch(int count) { if (count < 0) throw new IllegalArgumentException("count < 0"); this.sync = new Sync(count);}2.2 await()await() 主要作用s...原创 2019-09-23 01:01:42 · 78 阅读 · 0 评论 -
AQS——Condition源码分析
文章目录1.初识Condition2.源码解析1ConditionObject 的实例2.ConditionObject内部类3.await3.1.addConditionWaiter()3.2 unlinkCancelledWaiters()3.3.fullyRelease(Node node)3.4isOnSyncQueue(Node node)4 signal()唤醒线程,转移到阻塞队列4....原创 2019-09-22 23:05:35 · 213 阅读 · 0 评论 -
ReentrantLock
4.1初识ReentrantLockReentrantLock是可重入锁,也叫递归锁。默认是非公平锁,也可以指定公平锁。ReentrantLock常见用法 public static void main(String[] args) throws Exception { final int[] counter = {0}; ReentrantLock loc...原创 2019-09-21 15:16:00 · 114 阅读 · 0 评论 -
深度解读 Java 线程池设计思想及源码实现
深度解读 java 线程池设计思想及源码实现本文转载https://www.javadoop.com/post/java-thread-pool创建时间: 2017-09-05 00:00:00我相信大家都看过很多的关于线程池的文章,基本上也是面试的时候必问的,如果你在看过很多文章以后,还是一知半解的,那希望这篇文章能让你真正的掌握好 Java 线程池。本文一大重点是源码解析,同时会有少量...转载 2019-09-30 17:25:12 · 150 阅读 · 0 评论