volatile:当新建一个线程时,为了提高效率,
他会将某些数据拷贝一份到自己这里,所以有可能
你在线程中修改了数据,但是修改的只是你自己的备
份而已,而不会影响到原始的数据。或者其他的线程修改了数据,
你这边却看不到,这样就可能对你的多线程程序造成影响。
使用volatile的时候,则不会对这个变量进行私有拷贝,这样,你的
多线程程序就不会出错了。但是需要注意的是,做私有拷贝对于提高
程序的效率,非常有益,所以记得只在必须的时候才使用volatile。
transient:表示当前变量在序列化的时候,不要进行序列化,
比如对于密码等敏感信息,或者一些本来序列化就没有意义的东西,
诸如数据库连接,可以使用此此关键字进行修饰。
附注:
1.在c++中的volatile,是禁用寄存器优化,这样的话,变量就是直接
存在存在内存的,就不会存在因为线程A将变量存在寄存器里,然后访问
的都是寄存器的,而线程B对于变量的修改,A就无法感知了,导致多线程
程序的错误。
2.一个小知识,在java中,long和double的赋值不是原子操作,而且他的基本
类型的赋值则都是原子的,但是如果加上volatile的话,则读写是原子的。
对引用(无论32bit或者64bit)的读写总是原子的。
http://blog.163.com/javaee_chen/blog/static/17919507720113138059122/
相关推荐
Java中有53个关键字,包括但不限于: - `abstract`:用于声明抽象类和抽象方法。 - `boolean`:表示布尔类型,只有两个可能的值:true 和 false。 - `break`:用于中断循环或switch语句。 - `byte`:一种基本数据...
在Java中,一共有53个关键字,包括两个保留字。下面将详细阐述这些关键字的功能和用途。 1. `abstract` - 用于声明抽象类或抽象方法,表示类不提供具体实现。 2. `assert` - 用于断言某个条件为真,通常用于测试和...
在Java编程语言中,保留字(Reserved Words)和关键字(Keywords)是两个非常重要的概念,它们构成了Java语法的基础。保留字是Java语言已经预定义并赋予特定含义的词汇,而关键字则是Java语法结构中不可或缺的部分。...
- `boolean`:布尔类型,只有`true`和`false`两个值。 4. 类与对象: - `class`:声明类。 - `interface`:声明接口。 - `abstract`:抽象类或抽象方法的标识。 - `final`:不可改变的标识,用于类、方法或...
- `public`, `private`, `protected`, `static`, `final`, `abstract`, `synchronized`, `volatile`, `transient`:这些关键字用于定义访问级别和修饰符。 - `try`, `catch`, `finally`, `throw`, `throws`:这些...
8. **boolean**: 表示逻辑类型,只有两个可能的值:`true` 和 `false`。 9. **void**: 用于声明方法不返回任何值。 10. **String**: 虽然不是关键字,但经常被视为基本类型的一种,用于表示文本字符串。 #### 流程...
- **用途**:布尔基本数据类型,可以存储`true`或`false`两个值。 4. **break** - **用途**:用于提前退出循环或`switch`语句。 5. **byte** - **用途**:8位有符号整数类型,取值范围从-128到127。 6. **...
Java编程语言中有51个关键字,它们在程序中扮演着至关重要的角色,用来定义类、接口、变量、方法以及控制程序流程。以下是一些主要的关键字及其解释: 1. `abstract`:抽象关键字,用于声明抽象类和抽象方法。抽象...
### Java中的50个关键字详解 #### 一、引言 Java作为一种广泛使用的编程语言,在其语法体系中定义了一系列关键字,这些关键字具有特定的意义和用途,对于理解和编写Java程序至关重要。本文将详细介绍Java中与数据...
Java编程基础是学习Java开发的重要环节,而关键字和转义字符是其中不可或缺的两个概念。在Java中,关键字是被Java语言预定义并赋予特殊含义的词汇,它们不能作为变量、类名或方法名等标识符使用。转义字符则是用于在...
Java拥有51个关键字,这些关键字在编程中扮演着核心角色,用于声明类型、控制流程、异常处理等。下面我们将逐一介绍这些关键字: 1. **abstract**:用于定义抽象类和抽象方法,表示该类不能被实例化,或方法没有...
2. `boolean`: 表示逻辑值,只有两个可能的值,`true` 和 `false`。 3. `break`: 用于跳出当前循环或者switch语句,提前结束执行。 4. `byte`: 一种基本数据类型,表示8位的二进制数字,取值范围-128到127。 5. `...
* boolean 是一个布尔类型,用于表示一个逻辑判定的真假值,在 Java 中只有两个值,即 true 和 false。 在 Java 中,基本数据类型的定义和赋值需要使用特定的语法:<数据类型> <数据名> = <数值>; 例如:int a = ...
`boolean`类型用于表示逻辑值,只有两个可能的值:`true` 和 `false`。 **示例:** ```java boolean isPassed = true; ``` #### 4. `break` `break`关键字用于立即退出循环或`switch`语句,转移到紧跟`break`语句...
9. 其他关键字:包括native、strictfp、transient、volatile、assert、goto、const和enum等8个关键字。 标识符是用户在编程时给类、变量、常量、方法(函数)、语句块等起的名字。Java语言中标识符不包括关键字,而...
- `boolean` 是Java的基本数据类型之一,用于表示逻辑值,只有两个可能的值:`true` 和 `false`。它可以用于定义变量、函数参数或类的成员变量。例如: ```java boolean isDone = false; if (isDone) { // do ...
- **boolean**:布尔类型,有两个值true和false。 - **byte**:字节类型,占用1字节。 - **char**:字符类型,占用2字节。 - **double**:双精度浮点类型,占用8字节。 - **float**:单精度浮点类型,占用4字节。 - ...
`byte`是8位的,`short`是16位的,`int`是32位的,`long`是64位的整数,`float`和`double`分别是32位和64位的浮点数,`char`是16位的Unicode字符,而`boolean`表示逻辑值,只有`true`和`false`两个状态。 在控制流...