D2 线程间的通信

volatile

  1. 保证各个线程的可见性
  2. 子线程会从主线程加载成员变量,以期优化

wait和notify方法

  1. 当使用wait 和 notify 的时候 , 一定要配合着synchronized关键字去使用,final Object lock = new Object();
  2. wait 释放锁,notify不释放锁
  3. 弊端:notify 释放,不是实时释放锁。

CountDownLatch

  1. countDownLatch.countDown();
  2. countDownLatch.await();

AtomicInteger

模拟BlockingQueue

  1. 模拟阻塞的队列

线程里使用变量必须使用final进行修饰

ThreadLocal

  1. 用于存储当前线程相关的变量,用于无锁的设计,一个线程一个
  2. ConcurrentHashMap

单例

  1. 饥汉

    1. 使用静态内部类
  2. 饱汉

    1. 双重check

results matching ""

    No results matching ""