Java线程安全策略

94 阅读1分钟

不可变

  • final
  • 事实不可变
  • 如String

无状态

  • 没有实例域
  • 如Servlet

volatile

  • 运算结果不依赖当前变量值
  • 不参与不变性约束
  • 如AQS的state

线程封闭

  • 线程栈内私有,方法中局部变量的使用
  • ThreadLocal,相当月Map

J.U.C工具包

  • 以Concurrent前缀的并发类,如ConcurrentHashMap
  • 含有Blocking的阻塞类,如LinkedBlockingDeque
  • 以Atomic为前缀的原子变量类,如AtomicInteger
  • 辅助工具类,如CountDownLatch

同步锁

  • synchronized
  • ReentrantLock
  • ReentrantReadWriteLock