Java 关键字 final volatile static

2019-02-14  本文已影响13人  黄靠谱

final关键字

修饰类对象、方法、局部变量、成员变量、基本类型、引用类型上效果都不一样

  1. final修饰的类,不可被继承,比如String类
  2. final修饰的方法,不能被子类重写覆盖,比如ClassLoader.findLoadedClass()就是final的
  3. final修饰的静态成员变量,也叫常量,比如常量工具类

volatile关键字

公用的对象存放在主内存当中,每个线程去处理公用对象的时候会拷贝镜像到本地内存当中,在CPU进行读取,修改,写回到本地内存,最后写回到主内存当中,这时候线程之间不可见。volatile关键字会让读取和写的操作的时候,会立刻通知更新主内存同步,并不保证线程安全。

static的特点

线程共享唯一,节省内存开销,优先于构造函数加载

  1. 和类的信息加载而一起加载,不依赖于对象的存在,也优先于对象实例化(构造函数)加载
  2. 保存在方法区,线程共享。
  3. 线程共享所以节省内存开销,比如一些常量对象,另外常量方法不需要实例化对象再调用他,可以直接类名.方法调用,这样不仅简约代码,而且避免实例化对象的内存开销
  4. 线程共享所以可以统一维护多个相同类型的对象属性值。
  5. 常用形式: 静态方法,静态成员变量,静态代码块
上一篇 下一篇

猜你喜欢

热点阅读