volatile/synchronized关键字解释

Java 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized”;与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,但是它所能实现的功能也仅是 synchronized 的一部分。

volatile 变量

1. volatile用于修饰简单数据类型变量,如int、float、boolean等。

2. "volatile 变量"可用于提供线程安全,但是只能应用于非常有限的一组用例:多个变量之间或者某个变量的当前值与修改后值之间没有约束。如:当变量的值由自身的上一个值决定时,如n=n+1、n++等,volatile关键字将失效

3. volatile主要是在使用多线程对全局变量(即静态变量)进行操作时来加以控制。所以在使用volatile关键时如果没有把握,可以使用synchronized来代替volatile。

synchronized

1. synchronized不能修饰变量 -- 它修饰的是代码块或者是方法。

2. 修饰方法时需要放在返回类型之前。

3. synchronized关键字修饰方法时,同步锁为当前实例;修饰静态方法时,同步锁为该类Class。

synchronized块可以同步一个对象变量、静态方法和非静态方法。语法为:

括号中的“表达式”实际上为同步锁。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值