一、Java 并发编程之美:并发编程高级篇之五
微信扫码二维码加入
本 Chat 作为 Java 并发编程之美系列的高级篇之五,讲解JUC包中提供的三种线程同步器的使用与原理分析内容如下:(建议先阅读 并发编程高级篇之三-锁 )
- JUC 中倒数计数器 CountDownLatch 的使用与原理分析,当需要等待多个线程执行完毕后在做一件事情时候 CountDownLatch 是比调用线程的 join 方法更好的选择, CountDownLatch 与 线程的 join 方法区别是什么?
- JUC 中 回环屏障 CyclicBarrier 的使用与分析,它也可以实现像CountDownLatch一样让一组线程全部到达一个状态后再全部同时执行,但是 CyclicBarrier 可以被复用。那么CyclicBarrier内部的实现与CountDownLatch有何不同那?
- JUC 中 Semaphore的使用与原理分析,Semaphore 也是 Java 中的一个同步器,与 CountDownLatch 和 CycleBarrier 不同在于它内部的计数器是递增的,那么,Semaphore的内部实现是怎样的那?
-
最后对上面三种同步器实现进行简单对比。
二、Java 并发编程之美:并发编程实践
本 Chat 作为 Java 并发编程之美系列的终章,我们来讲解并发编程中的一些实践与经常会遇到的问题,内容如下:(建议先阅读 并发编程高级篇之三-锁 )
- Logback 日志框架中异步日志打印中 ArrayBlockingQueue 的使用,Logback 是如何借助队列将同步转换为异步,节省调用线程 RT 响应时间的?
- 并发组件 ConcurrentHashMap 使用注意项,虽然 ConcurrentHashMap 是并发安全的组件,但是使用不当还是会造成程序错误,这里列出一些常见的出错点,并讲解如何避免。
- 使用定时器 Timer 的时候需要注意的一些问题,结合源码讲解出现问题的原因,以及如何避免。
- SimpleDateFormat 是线程不安全?为啥?应该如何正确使用?
- 线程池使用 FutureTask 时候需要注意的一点事,FutureTask 使用不当可能会造成调用线程一直阻塞,如何避免?
-
使用 ThreadLocal 不当可能会导致内存泄露,本节讲解为何会出现内存泄露,以及如何避免。