• volatile
    • 类型修饰符,告诉jvm该变量在寄存器/工作内存中值是不确定的
    • 没有原子性
    • 不会造成线程阻塞
    • 读性能几乎不变,写稍慢,因为插入内存屏障来保证不乱序执行
    • 对所有线程可见(可见性,线程的修改对其它线程可见)
      • 跳过cpu cache,新值立即同步到内存, 使用前从内存刷新
    • 禁止编译器指令重排序优化
  • synchronized
    • 锁当前变量、方法、类,只有当前线程可用
    • 保证可见性和原子性
  • 方法修饰
    • 开放性
      修饰符当前类同包子类其他包
      public
      protected
      private
      • default修饰接口默认方法(虚方法)