synchronized和volatile关键字

1.synchronized的用法

synchronized 是Java提供的一个并发控制的关键字,主要有两种用法,分别是同步方法和同步代码快。即synchronized既可以修饰方法也可以修饰代码块。

被synchronized修饰的代码块及方法,在同一时间只能被单个线程访问。

  • 普通同步方法:锁的是当前实例对象
  • 静态同步方法:锁的是当前类的class对象(因为静态方法在对象之前运行,运行静态方法的时候可能都没有对象,所以是当前类的class对象)
  • 同步方法块:锁的是括号里的对象

// 2.synchronized实现原理 本人比较菜还无法深入理解>O<.......

2.volatile的用法

首先volatile只能用来修饰变量,无法修饰方法和代码块。volatile提供可见性和有序性。

再说一下原子性、可见性、顺序性

原子性是指一个操作是不可中断的,要全部执行完成,要不就都不执行

可见性是指多个线程访问同一个变量,其中一个线程修改了这个变量的值,其他线程可立即看到修改的值

顺序行是指按照代码的先后顺序执行

volatile与可见性:被其修饰的变量在被修改后可以立即同步到主内存,被其修饰的变量每次使用之前都是从主内存刷新

volatile与顺序性:volatile可以禁止指令重排优化,这就保证了代码程序会严格按照代码的先后顺序来执行

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值