`
ihyperwin
  • 浏览: 434655 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

transient Volatile ThreadLocal

 
阅读更多
Java的serialization提供了一种持久化对象实例的机制。当持久化对象时,可能有一个特殊的对象数据成员,我们不想用serialization机制来保存它。为了在一个特定对象的一个域上关闭serialization,可以在这个域前加上关键字transient。  
transient是Java语言的关键字,用来表示一个域不是该对象串行化的一部分。当一个对象被串行化的时候,transient型变量的值不包括在串行化的表示中,然而非transient型的变量是被包括进去的。注意static变量也是可以串行化的



Volatile修饰的成员变量在每次被线程访问时,都强迫从主内存中重读该成员变量的值。而且,当成员变量发生变化时,强迫线程将变化值回写到主内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。  
 
Java语言规范中指出:为了获得最佳速度,允许线程保存共享成员变量的私有拷贝,而且只当线程进入或者离开同步代码块时才与共享成员变量的原始值对比。  
 
这样当多个线程同时与某个对象交互时,就必须要注意到要让线程及时的得到共享成员变量的变化。  
 
而volatile关键字就是提示VM:对于这个成员变量不能保存它的私有拷贝,而应直接与共享成员变量交互。  
 
使用建议:在两个或者更多的线程访问的成员变量上使用volatile。当要访问的变量已在synchronized代码块中,或者为常量时,不必使用。  
 
由于使用volatile屏蔽掉了VM中必要的代码优化,所以在效率上比较低,因此一定在必要时才使用此关键字。  



ThreadLocal是什么

早在JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。

ThreadLocal很容易让人望文生义,想当然地认为是一个“本地线程”。其实,ThreadLocal并不是一个Thread,而是Thread的局部变量,也许把它命名为ThreadLocalVariable更容易让人理解一些。

当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。

从线程的角度看,目标变量就象是线程的本地变量,这也是类名中“Local”所要表达的意思。
分享到:
评论

相关推荐

    Java_transient关键字

    ### Java中的transient关键字详解 在Java编程语言中,`transient`关键字是一个非常重要的概念,主要用于对象序列...同时,理解`transient`与`volatile`之间的区别也是处理复杂Java应用中的多线程和序列化问题的关键。

    Java中的transient关键字.doc

    Java 中的 transient 关键字 在 Java 编程中,transient 关键字是一个非常重要的概念,它用来说明一个属性是临时的,不会被序列化。在 Java 中,序列化是指将对象的状态信息转换为字节流的过程,以便于对象在网络上...

    java关键字transient

    在Java编程语言中,`transient`是一个非常重要的关键字,它与对象持久化和序列化密切相关。当一个字段被声明为`transient`时,它表明该字段的值不会随着对象的序列化而保存。这通常用于那些不希望或者不需要在序列化...

    Java并发编程-并发容器1

    1. **table**: `transient volatile Node,V>[] table` 是存储Node的数组,作为ConcurrentHashMap的数据容器。采用懒加载,首次插入数据时初始化,数组大小为2的幂次方。 2. **nextTable**: `transient volatile Node...

    transient1.rar_TRANSIENT STABILITY_transient

    transient stability matlab

    ADS瞬时波形仿真-TRANSIENT仿真(以共射放大器为例)

    TRANSIENT仿真(以共射放大器为例)工程

    Java关键字transient

    在Java编程语言中,`transient`是一个非常重要的关键字,它与对象的序列化息息相关。序列化是将一个对象的状态转换为字节流的过程,这样就可以存储或在网络中传输。当我们标记一个字段为`transient`时,意味着该字段...

    1-D——Transient_transient_一维传热学学习_

    在传热学领域,"1-D Transient"指的是在一维空间中的瞬态传热过程,这是一个重要的理论与实践相结合的课题。本资源包提供了一维非稳态传热分析的学习材料,包括一个实际的小案例和相关的MATLAB程序,旨在帮助学习者...

    transient Java语言的关键字

    transient是Java语言的关键字,用来表示一个域不是该对象串行化的一部分。当一个对象被串行化的时候,

    Regulated transient pool boiling of water during quenching

    The effects of surface wettability, from superhydrophilic to superhydrophobic, on transient pool boiling of water under atmospheric pressure were experimentally examined by means of the quenching ...

    Java transient关键字使用小记

    在Java编程语言中,`transient`关键字是一个非常重要的概念,它与对象的序列化过程紧密相关。序列化是将一个对象的状态转换为字节流,以便存储或在网络中传输。当一个类实现了`Serializable`接口,该类的对象就可以...

    What is a Silicon Transient Voltage Suppressor and how does it work.pdf

    Transient Voltage Suppressors (TVS’s) are devices used to protect vulnerable circuits from electrical overstress such as that caused by electrostatic discharge, inductive load switching and induced ...

    EMTDC Transient Analysis for PSCAD Power System Simulation

    EMTDC,即电磁暂态计算装置(Electromagnetic Transient DC),它是一种强大的电磁暂态仿真引擎,自20世纪70年代中期以来一直在不断演进。 EMTDC的起源可以追溯到1969年赫尔曼·多姆尔(Hermann Dommel)博士的经典...

    Rocky DEM Workshop 15-Transient Structural Part B_Mechanical

    在本工作坊“Rocky DEM Workshop 15 - Transient Structural Part B_Mechanical Coupling (Workbench)”中,我们将深入探讨如何利用Ansys Workbench进行离散元素法(DEM)与有限元分析(FEA)的一向耦合模拟,特别...

    leetcode题库-java-interview:Java研发基础相关

    transient 枚举 注解 JDK7新特性 JDK8新特性 JDK9新特性 JDK10新特性 运行时数据区 对象 OOM & SOF 内存模型 垃圾回收算法 垃圾收集器 内存分配与回收策略 类加载 参数优化 进程与线程的区别 进程通信 创建线程的...

    Transient Thermal Example.zip_TRANSIENT THERMAL_thermal_transien

    THERMAL TRANSIENT ANALYSIS

    Image Embedding of PMU Data for Deep Learning towards Transient Disturbance

    The test results demonstrate the superiority of the both DL algorithms over other methods in the application of power system transient disturbance classification. Keywords—Convolutional Neural ...

    Java关键字Transient与串行化

    在Java编程语言中,`transient`关键字与对象的序列化(serialization)机制密切相关,它在处理对象状态的持久化时扮演着关键角色。本文将深入探讨`transient`关键字的功能、用途以及它如何影响Java对象的序列化过程。 ...

    Java之transient关键字.Java

    在Java编程语言中,`transient`关键字是一个非常重要的特性,它用于标记对象的某个成员变量不应该被序列化。当你创建一个可序列化的类(通过实现`Serializable`接口)时,如果你不想某些字段在序列化过程中被保存或...

    Transient Stability Coding.rar_Case File_TRANSIENT STABILITY_tra

    This is coding for case transient stabilit. this is simple m file for solve the transient stability case

Global site tag (gtag.js) - Google Analytics