当前位置 > 首页 > 编程语言 > Chat
Java 并发编程之美:并发编程高级篇之五
Java 并发编程实践中的话:编写正确的程序并不容易,而编写正常的并发程序就更难了。相比于顺序执行的情况,多线程的线程安全问题是微妙而且出乎意料的,因为在没有进行适当同步的情况下多线程中各个操作的顺序是不可预期的。 并发编程相比 Java 中其他知识点学习起来门槛相对较高,学习起来比较费劲,从而导致很多人望而却步;而无论是职场面试和高并发高流量的系统的实现却都还离不开并发编程,从而导致能够真正掌握并发编程的人才成为市场比较迫切需求的。 本 Chat 作为 Java 并发编程之美系列的高级篇之五,讲解JUC包中提供的三种线程同步器的使用与原理分析内容如下:(建议先阅读 [并发编程高级篇之三-锁](http://gitbook.cn/gitchat/activity/5ac85e1b2a04fd6c837137a2) ) - JUC 中倒数计数器 CountDownLatch 的使用与原理分析,当需要等待多个线程执行完毕后在做一件事情时候 CountDownLatch 是比调用线程的 join 方法更好的选择, CountDownLatch 与 线程的 join 方法区别是什么? - JUC 中 回环屏障 CyclicBarrier 的使用与分析,它也可以实现像CountDownLatch一样让一组线程全部到达一个状态后再全部同时执行,但是 CyclicBarrier 可以被复用。那么CyclicBarrier内部的实现与CountDownLatch有何不同那? - JUC 中 Semaphore的使用与原理分析,Semaphore 也是 Java 中的一个同步器,与 CountDownLatch 和 CycleBarrier 不同在于它内部的计数器是递增的,那么,Semaphore的内部实现是怎样的那? - 最后对上面三种同步器实现进行简单对比。
追梦 · 资深 java 工程师
620
Java 并发编程之美:并发编程高级篇之四
Java 并发编程实践中的话:编写正确的程序并不容易,而编写正常的并发程序就更难了。相比于顺序执行的情况,多线程的线程安全问题是微妙而且出乎意料的,因为在没有进行适当同步的情况下多线程中各个操作的顺序是不可预期的。 并发编程相比 Java 中其他知识点学习起来门槛相对较高,学习起来比较费劲,从而导致很多人望而却步;而无论是职场面试和高并发高流量的系统的实现却都还离不开并发编程,从而导致能够真正掌握并发编程的人才成为市场比较迫切需求的。 本 Chat 作为 Java 并发编程之美系列的高级篇之四,图形结合讲解JDK中线程安全的并发队列实现原理,内容如下:(建议先阅读 [并发编程高级篇之三-锁](http://gitbook.cn/gitchat/activity/5ac85e1b2a04fd6c837137a2) ) - JDK 中基于链表的非阻塞无界队列 ConcurrentLinkedQueue 原理剖析,ConcurrentLinkedQueue 内部是如何使用 CAS 非阻塞算法来保证多线程下入队出队操作的线程安全? - JDK 中基于链表的阻塞队列 LinkedBlockingQueue 原理剖析,LinkedBlockingQueue 内部是如何使用两个独占锁 ReentrantLock 以及对应的条件变量保证多线程先入队出队操作的线程安全?为什么不使用一把锁,使用两把为何能提高并发度? - JDK 中基于数组的阻塞队列 ArrayBlockingQueue 原理剖析,ArrayBlockingQueue 内部如何基于一把独占锁以及对应的两个条件变量实现出入队操作的线程安全? - JDK 中无界优先级队列 PriorityBlockingQueue 原理剖析,PriorityBlockingQueue 内部使用堆算法保证每次出队都是优先级最高的元素,元素入队时候是如何建堆的,元素出队后如何调整堆的平衡的? - 浅谈上面各种队列的对比,以及给出部分队列在开源框架中使用样例。
追梦 · 资深 java 工程师
624
Java 并发编程之美:并发编程高级篇之三
借用 Java 并发编程实践中的话:编写正确的程序并不容易,而编写正常的并发程序就更难了。相比于顺序执行的情况,多线程的线程安全问题是微妙而且出乎意料的,因为在没有进行适当同步的情况下多线程中各个操作的顺序是不可预期的。 并发编程相比 Java 中其他知识点学习起来门槛相对较高,学习起来比较费劲,从而导致很多人望而却步;而无论是职场面试和高并发高流量的系统的实现却都还离不开并发编程,从而导致能够真正掌握并发编程的人才成为市场比较迫切需求的。 本 Chat 作为 Java 并发编程之美系列的高级篇之三,主要讲解锁,内容如下:(建议先阅读 [Java 并发编程之美:并发编程高级篇之二](http://gitbook.cn/gitchat/activity/5ac034eb67727920220cb904) ) - 抽象同步队列 AQS (AbstractQueuedSynchronizer)概述,AQS 是实现同步的基础组件,并发包中锁的实现底层就是使用 AQS 实现,虽然大多数开发者可能从来不会直接用到 AQS,但是知道其原理对于架构设计还是很有帮助的。 - 独占锁 ReentrantLock 原理探究,ReentrantLock 是可重入的独占锁或者叫做排它锁,同时只能有一个线程可以获取该锁,其实现分为公平与非公平的独占锁。 - 读写锁 ReentrantReadWriteLock 原理,ReentrantLock 是独占锁,同时只有一个线程可以获取该锁,而实际情况下会有写少读多的场景,显然 ReentrantLock 满足不了需求,所以 ReentrantReadWriteLock 应运而生,本文来介绍读写分离锁的实现。 - StampedLock 锁原理探究,StampedLock 是并发包里面 jdk8 版本新增的一个锁,该锁提供了三种模式的读写控制。
追梦 · 资深 java 工程师
654
Java 并发编程之美:并发编程高级篇之二
借用 Java 并发编程实践中的话:编写正确的程序并不容易,而编写正常的并发程序就更难了。相比于顺序执行的情况,多线程的线程安全问题是微妙而且出乎意料的,因为在没有进行适当同步的情况下多线程中各个操作的顺序是不可预期的。 并发编程相比 Java 中其他知识点学习起来门槛相对较高,学习起来比较费劲,从而导致很多人望而却步;而无论是职场面试和高并发高流量的系统的实现却都还离不开并发编程,从而导致能够真正掌握并发编程的人才成为市场比较迫切需求的。 本 Chat 作为 Java 并发编程之美系列的高级篇之二,主要讲解内容如下:(建议先阅读 [Java 并发编程之美:基础篇](http://gitbook.cn/m/mazi/activity/5aafb17477918b6e8444b65f) ) - rt.jar 中 Unsafe 类主要函数讲解, Unsafe 类提供了硬件级别的原子操作,可以直接操作内存变量,其在 JUC 源码中被广泛的使用,了解其原理为研究 JUC 源码奠定了基础。 - rt.jar 中 LockSupport 类主要函数讲解,LockSupport 是个工具类,主要作用是挂起和唤醒线程,是创建锁和其它同步类的基础,了解其原理为研究 JUC 中锁的实现奠定基础。 - 讲解 JDK8 新增原子操作类 LongAdder 实现原理,并讲解 AtomicLong 的缺点是什么,LongAdder 是如何解决 AtomicLong 的缺点的,LongAdder 和 LongAccumulator 是什么关系? - JUC 并发包中并发组件 CopyOnWriteArrayList 的实现原理,CopyOnWriteArrayList 是如何通过写时拷贝实现并发安全的 List?
追梦 · 资深 java 工程师
659
微信扫描登录