java源码常用关键字

native 

我们先来看看native关键字

jdk1.8 中的Class类中有这么一个方法:

 public native boolean isInstance(Object obj);

我们不管这个方法是做什么的,但是一看这个方法我们会觉得很奇怪,因为Class是一个类,而不是一个接口,居然还存在没有方法体的方法,带着疑问继续了解;

那么native这个单词有本地的意思,被native修饰的方法称作本地方法,是一个原生态的方法,它的实现不在当前文件中。

那么为什么不在当前文件中实现呢?要搞得这么麻烦!!

首先我们了解了虚拟机,知道java跨平台是因为虚拟机,而虚拟机通过接口来和不同的平台对接,因此java语言有了跨平台的特性,但也是因为如此,java语言不能去对操作系统的底层进行访问和操作,需要来借助其他语言来实现(比如C/C++);

volatile

  这个关键字说起来,估计要连带出一系列的问题(balabala.....)

简单的说Volatile关键字实际下有两层含义:

    A)保证了内存的可见性;

    B)禁止了指令的重排序;

何为内存的可见性,就是在我从主存中读取数据放到缓存区中的时候,我们修改数据,就会造成缓存中的数据和主内存中的数据不一致,而用volatile修饰的变量,一旦修改,就会写入内存中,而普通变量写入主内存的时机我们是不确定的;

 

指令的重排序:在我们写的代码中,jvm运行的时候并非都是按照代码的顺序来执行的,可以通过重排序来优化代码;

重排序:

int a=1;
int b=20;
int c=a+b;

 

我们先给a赋值,然后给b赋值,但是在运行时,jvm很有可能会先给b赋值,在给a赋值;

 

待更新...

猜你喜欢

转载自blog.csdn.net/qq_39512671/article/details/81038545