Java_一些特殊的关键字详(?)解

1. native。

  • 在看JDK源码时,想知道Math包里比如cos, sin等函数是如何实现的(猜想的是用他们在0点的泰勒展开式近似),但是打开之后却发现只有一个函数声明,并且有关键字native,所以就Google了一个大家的解释:
  • 表示该方法为本地方法,实际是说这个方法是由c/c++实现的,并且被编译成了DLL,由java来调用。
  • Java语言本身不能对操作系统底层进行访问和操作,但是可以通过JNI(java native interface)接口调用其他语言来实现对底层的访问。

2. volatile.

    • 一般java内存会分为(方法区,堆)(虚拟机栈,本地方法栈,程序计数器)等不同的内存区域;
    • As we all know, 系统存在一个主内存(Main Memory),Java中所有变量都储存在主存中,对于所有线程都是共享的。每条线程都有自己的工作内存(Working Memory),工作内存中保存的是主存中某些变量的拷贝,线程对所有变量的操作都是在工作内存中进行,线程之间无法相互直接访问,变量传递均需要通过主存完成。
    • 如果一个变量被标识为了volatile,每次使用改变量时都要从主存储器中读出;同样的,写该变量时要写入主存储器中。
    • 含有此关键字的变量具有两种特性:
      • 保证此变量对于所有线程是可见的;
      • 禁止指令重排序优化。
上一篇:VS Code 现可作为 snap 包在 Linux 发行版上使用


下一篇:gettimeofday() 获取系统时间,精确到微秒 这个似乎只能在linux 下用,不能在windows 下用