Java关键字volatile的用法和意义是什么?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1306个文字,预计阅读时间需要6分钟。
`synchronized` 关键字,`synchronized` 是 JDK 1.5 提供的线程同步机制,可用于修饰代码块或方法,确保同一时间只有一个线程能执行被修饰的代码。它可以修饰普通方法、静态方法以及代码块,保证原子性、可见性和有序性。
synchronized关键字,synchronized 是jdk1.5提供的线程同步机制,可以用来修饰代码块,修饰普通方法,修饰static声明的静态方法,能够保证原子性、可见性、有序性,在jdk1.5,synchronized 是一个重量级的同步机制,线程挂起和阻塞都要从用户态转入内核态,比较耗性能,但是在jdk1.6时,进行了一系列的优化,比如自旋锁,锁粗化,锁消除等,使得其性能有了很大的提升,关于锁的这些优化,我在锁详解这篇文章也有详细的介绍。
通常,对于新人来讲,不管三七二十一,对于需要同步的处理,直接上 synchronized 准没错,但是JVM还为我们提供了另外一个轻量级的线程同步机制——volatile。可能很多人没有在代码中实际使用过这个关键字,但其实,如果你研究过jdk并发包,这个关键字还是使用挺多的,下面我们就来详细介绍这个关键字。
1、可见性
通过 volatile 关键字修饰的变量,能够保证变量的可见性。
也就是说,当一个线程修改了被volatile修饰的变量,修改后的值对于其他线程来说是立即可以知道的。
注意:这里有个误区,可见性并不是原子性。
本文共计1306个文字,预计阅读时间需要6分钟。
`synchronized` 关键字,`synchronized` 是 JDK 1.5 提供的线程同步机制,可用于修饰代码块或方法,确保同一时间只有一个线程能执行被修饰的代码。它可以修饰普通方法、静态方法以及代码块,保证原子性、可见性和有序性。
synchronized关键字,synchronized 是jdk1.5提供的线程同步机制,可以用来修饰代码块,修饰普通方法,修饰static声明的静态方法,能够保证原子性、可见性、有序性,在jdk1.5,synchronized 是一个重量级的同步机制,线程挂起和阻塞都要从用户态转入内核态,比较耗性能,但是在jdk1.6时,进行了一系列的优化,比如自旋锁,锁粗化,锁消除等,使得其性能有了很大的提升,关于锁的这些优化,我在锁详解这篇文章也有详细的介绍。
通常,对于新人来讲,不管三七二十一,对于需要同步的处理,直接上 synchronized 准没错,但是JVM还为我们提供了另外一个轻量级的线程同步机制——volatile。可能很多人没有在代码中实际使用过这个关键字,但其实,如果你研究过jdk并发包,这个关键字还是使用挺多的,下面我们就来详细介绍这个关键字。
1、可见性
通过 volatile 关键字修饰的变量,能够保证变量的可见性。
也就是说,当一个线程修改了被volatile修饰的变量,修改后的值对于其他线程来说是立即可以知道的。
注意:这里有个误区,可见性并不是原子性。

