Java 并发编程 78 讲-完
02 如何正确停止线程?为什么 volatile 标记位的停止方法是错误的?
04 waitnotifynotifyAll 方法的使用注意事项?
12 有哪 6 种常见的线程池?什么是 Java8 的 ForkJoinPool?
17 如何正确关闭线程池?shutdown 和 shutdownNow 的区别?
21 如何看到 synchronized 背后的“monitor 锁”?
22 synchronized 和 Lock 孰优孰劣,如何选择?
25 读写锁 ReadWriteLock 获取锁有哪些规则?
30 ConcurrentHashMap 在 Java7 和 8 有何不同?
32 同样是线程安全,ConcurrentHashMap 和 Hashtable 的区别
33 CopyOnWriteArrayList 有什么特点?
35 阻塞队列包含哪些常用的方法?add、offer、put 等方法的区别?
40 AtomicInteger 在高并发下性能不好,如何解决?为什么?
42 AtomicInteger 和 synchronized 的异同点?
43 Java 8 中 Adder 和 Accumulator 有什么区别?
44 ThreadLocal 适合用在哪些实际生产的场景中?
45 ThreadLocal 是用来解决共享资源的多线程访问的问题吗?
46 多个 ThreadLocal 在 Thread 中的 threadlocals 里是怎么存储的?
47 内存泄漏——为何每次用完 ThreadLocal 都要调用 remove()?
50 使用 Future 有哪些注意点?Future 产生新的线程了吗?
51 如何利用 CompletableFuture 实现“旅游平台”问题?
53 CountDownLatch 是如何安排线程执行顺序的?
54 CyclicBarrier 和 CountdownLatch 有什么异同?
55 Condition、object.wait() 和 notify() 的关系?
62 volatile 的作用是什么?与 synchronized 有什么异同?
63 单例模式的双重检查锁模式为什么必须加 volatile?