transient & Volatile
来源:互联网 发布:手机关闭软件自动更新 编辑:程序博客网 时间:2024/06/14 22:52
1、Java的serialization提供了一种持久化对象实例的机制。当持久化对象时,可能有一个特殊的对象数据成员,我们不想用serialization机制来保存它。为了在一个特定对象的一个域上关闭serialization,可以在这个域前加上关键字transient。
transient是Java语言的关键字,用来表示一个域不是该对象串行化的一部分。当一个对象被串行化的时候,transient型变量的值不包括在串行化的表示中,然而非transient型的变量是被包括进去的。
注意static变量也是可以串行化的
2、Volatile修饰的成员变量在每次被线程访问时,都强迫从主内存中重读该成员变量的值。而且,当成员变量发生变化时,强迫线程将变化值回写到主内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。
使用建议:在两个或者更多的线程访问的成员变量上使用volatile。当要访问的变量已在synchronized代码块中,或者为常量时,不必使用。
在 java 垃圾回收整理一文中,描述了jvm运行时刻内存的分配。其中有一个内存区域是jvm虚拟机栈,每一个线程运行时都有一个线程栈,
线程栈保存了线程运行时候变量值信息。当线程访问某一个对象时候值的时候,首先通过对象的引用找到对应在堆内存的变量的值,然后把堆内存
变量的具体值load到线程本地内存中,建立一个变量副本,之后线程就不再和对象在堆内存变量值有任何关系,而是直接修改副本变量的值,
在修改完之后的某一个时刻(线程退出之前),自动把线程变量副本的值回写到对象在堆中变量。这样在堆中的对象的值就产生变化了。下面一幅图
描述这写交互
read and load 从主存复制变量到当前工作内存
use and assign 执行代码,改变共享变量值
store and write 用工作内存数据刷新主存相关内容
- Volatile & transient
- volatile transient
- transient & Volatile
- strictfp, volatile, transient关键词
- Java Volatile transient
- native, volatile, transient, strictfp
- transient与volatile温故而知新
- Volatile 和 Transient
- transient,volatile和strictfp
- Java volatile and transient
- transient vs volatile
- strictfp, volatile, transient关键词
- Java Volatile transient 关键字
- Java transient、volatile关键字
- transient和volatile区别
- transient, volatile, strictfp
- Java transient Volatile关键字
- Java Volatile transient关键字
- Eval绑定方法重载
- 获取到状态栏的高度
- 标准C++中的Iterator(迭代器)简介
- Android中onInterceptTouchEvent和onTouchEvent调用时序
- android 编译STL模块相关错误解决
- transient & Volatile
- SHT11(IIC协议的温湿度传感器)简介和编程方法
- abap table control里面各种属性和事件的写法
- Cookie的使用
- 北汽E系列三厢不仅仅吸引眼球
- GenyMotion使用遇到的问题杂记(更新中)
- linux输入子系统分析
- JSTL标签库学习笔记 七、SQL标签库
- 青铜器RDM作为科研创新管理的领导者,服务众多行业第一名客户