美文网首页
Java 关键字 final volatile static

Java 关键字 final volatile static

作者: 黄靠谱 | 来源:发表于2019-02-14 10:23 被阅读13次

final关键字

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

  1. final修饰的类,不可被继承,比如String类
  2. final修饰的方法,不能被子类重写覆盖,比如ClassLoader.findLoadedClass()就是final的
  3. final修饰的静态成员变量,也叫常量,比如常量工具类
  • final修饰成员变量的时候,在申明的时候就必须赋值
  • final修饰局部变量的时候,可以在使用的时候再进行赋值
  • final的赋值是基本类型的时候,一旦赋值就不能修改
  • final的赋值是其它类型的时候,一旦赋值就不能重新引用

volatile关键字

  • 每次读的时候去读主存上的值而不是本地栈中的值,每次写都立刻写到主存当中,而不是等线程结束后再回写到主内存
  • 轻量级的同步机制,实现变量的改变对所有线程可见,并不能避免线程安全
  • 该方法中禁止指令重排序优化

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

static的特点

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

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

相关文章

  • java多线程学习(三)

    线程的同步机制 java平台提供的线程同步机制包括锁,volatile关键字、final关键字、static关键字...

  • Java关键字final、static使用总结

    Java关键字final、static使用总结 一、final 根据程序上下文环境,Java关键字final有“这...

  • Java关键字final、static使用总结

    Java关键字final、static使用总结 一、final 根据程序上下文环境,Java关键字final有“这...

  • Java 关键字 final volatile static

    final关键字 修饰类对象、方法、局部变量、成员变量、基本类型、引用类型上效果都不一样 final修饰的类,不可...

  • Java中的static和final

    java中的static和final 此篇文章是记录我在学习Java中static和final关键字的笔记。 st...

  • Java 面向对象2

    Java 面向对象 1. static 和 final static关键字---修饰成员变量 用static修饰的...

  • Java学习--我需要掌握的技术

    关于专业需要点亮的技能 1. 基本语法 static,final,transient,volatile等关键字 2...

  • 2019-03-05 abstract

    Java abstract abstract 可以被哪些关键字修饰?private ×static ×final ...

  • Java基础 复习

    java未指定关键字则默认为friendly 继承关键字 extends 除了final,static,priv...

  • 继承

    .继承的特性 .继承关键字 构造器 static final关键字 static修饰方法(静态方法) final

网友评论

      本文标题:Java 关键字 final volatile static

      本文链接:https://www.haomeiwen.com/subject/rbvseqtx.html