最近看源码总发现一些没见过的关键字,今天就来整理一下native,strictfp,transient,volatile native 本地 native是与C++联合开发的时候用的!java自己开发不用的! 使用native关键字说明这个方法是原生函数,也就是这个方法是用C/C++语言实现的,并且被编译成了DLL,由java去调用. 这些函数的实现体在DLL中,JDK的源代码中并不包含,你应该是看不到的.对于不同的平台它们也是不同的.这也是java的底层机制,实际上java就是在不同的平台上调…
关键字:transient 使用对象:字段 介绍:transient说明一个属性是临时的,不会被序列化. 当对象进行序列化(Serializable)过程时候,有一些属性的状态是瞬时的,这样的对象是无法保存其状态的(例如一个Thread对象,或一个FileInputStream对象),对于这些字段,我们必须用transient关键字标明. 将不需要序列化的属性前添加关键字transient,序列化对象的时候,这个属性就不会序列化到指定的目的地中. 关键字:volatile 使用对象:字段 介绍:…
What is the significance of the transient keyword in Java? If you know the answer, good! you are a person who uses this a lot or a person who has read this very recently. If this seems like a word from a half remembered dream, well don’t worry you ha…
public class Demo09 { public static boolean flag = true; public static class T1 extends Thread { public T1(String name) { super(name); } @Override public void run() { System.out.println("线程" + this.getName() + " in"); while (flag) { ;…
万字长文:从计算机本源深入探寻volatile和Java内存模型 前言 在本篇文章当中,主要给大家深入介绍Volatile关键字和Java内存模型.在文章当中首先先介绍volatile的作用和Java内存模型,然后层层递进介绍实现这些的具体原理.JVM底层是如何实现volatile的和JVM实现的汇编代码以及CPU内部结构,深入剖析各种计算机系统底层原理.本篇文章超级干,请大家坐稳扶好,发车了!!!本文的大致框架如下图所示: 为什么我们需要volatile? 保证数据的可见性 假如现在有两个线程…
1. native 簡單講,呼叫其他語言(c,c++之類)做出來的dll做法1.利用java做個介面供其他語言實作(也就是宣告成native)2.用javah產出.h:3.用其他語言實現native方法4.編譯成dll5.在Java中,再用System.loadLibrary()方法讀dll,就成功啦 還是看原作的範例比較快認識理解Java中native方法 2. strictfp 意思是FP-strict,精確浮點,符合IEEE-754規範的,那為什麼不一開始就符合規範咧?看wiki是這麼說地…
Volatile修饰的成员变量在每次被线程访问时,都强迫从主内存中重读该成员变量的值.而且,当成员变量发生变化时,强迫线程将变化值回写到主内存.这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值.     Java语言规范中指出:为了获得最佳速度,允许线程保存共享成员变量的私有拷贝,而且只当线程进入或者离开同步代码块时才与共享成员变量的原始值对比.     这样当多个线程同时与某个对象交互时,就必须要注意到要让线程及时的得到共享成员变量的变化.     而volatile关键字就是提示…
static 和final static  静态修饰关键字,可以修饰 变量,程序块,类的方法: 当你定义一个static的变量的时候jvm会将将其分配在内存堆上,所有程序对它的引用都会指向这一个地址而不会重新分配内存: 修饰一个程序块的时候(也就是直接将代码写在static{...}中)时候,虚拟机就会优先加载静态块中代码,这主要用于系统初始化: 当修饰一个类方法时候你就可以直接通过类来调用而不需要新建对象. final 只能赋值一次:修饰变量.方法及类, 当你定义一个final变量时,jvm会…
CPU内存架构:https://www.jianshu.com/p/3d1eb589b48e Java内存模型:https://www.jianshu.com/p/27a9003c33f4 多线程下的缓存一致性问题:https://www.jianshu.com/p/97dc5242c3a6 java volatile关键字解惑:https://www.jianshu.com/p/195ae7c77afe Google—Java Memory Model:https://www.jianshu.…
Java 语言中的 volatile 变量可以被看作是一种“程度较轻的 synchronized“:与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,但是它所能实现的功能也仅是 synchronized 的一部分.为了真正搞明白volatile的语义和用法,我们首先介绍下Java内存模型:内存间的交互操作:原子性.可见性.有序性:先行发生原则等概念. 1.Java内存模型     在Java虚拟机规范中试图定义一种Java内存模型(Java Mem…