并发编程

  1. 什么是多线程并发和并行?
  2. 什么是线程安全问题?
  3. 什么是共享变量的内存可见性问题?
  4. 什么是Java中原子性操作?
  5. 什么是Java中的CAS操作,AtomicLong实现原理?
  6. 什么是Java指令重排序?
  7. Java中Synchronized关键字的内存语义是什么?
  8. Java中Volatile关键字的内存语义是什么?
  9. 什么是伪共享,为何会出现,以及如何避免?
  10. 什么是可重入锁、乐观锁、悲观锁、公平锁、非公平锁、独占锁、共享锁?
  11. 讲讲ThreadLocal 的实现原理?
  12. ThreadLocal 作为变量的线程隔离方式,其内部是如何做的?
  13. 说说InheritableThreadLocal 的实现原理?
  14. InheritableThreadLocal 是如何弥补 ThreadLocal 不支持继承的特性?
  15. CyclicBarrier内部的实现与 CountDownLatch 有何不同?
  16. 随机数生成器 Random 类如何使用 CAS 算法保证多线程下新种子的唯一性?
  17. ThreadLocalRandom 是如何利用 ThreadLocal 的原理来解决 Random 的局限性?
  18. Spring 框架中如何使用 ThreadLocal 实现 request scope 作用域 Bean?
  19. 并发包中锁的实现底层(对AQS的理解)?
  20. 讲讲独占锁 ReentrantLock 原理?
  21. 谈谈读写锁 ReentrantReadWriteLock 原理?
  22. StampedLock 锁原理的理解?
  23. 谈下对基于链表的非阻塞无界队列 ConcurrentLinkedQueue 原理的理解?
  24. ConcurrentLinkedQueue 内部是如何使用 CAS 非阻塞算法来保证多线程下入队出队操作的线程安全?
  25. 基于链表的阻塞队列 LinkedBlockingQueue 原理。