线程中volatile与synchronized区别

volatile和synchronized区别

volatile

1.volatile 在多线程中的一个线程改变公共变量时会通知其他的线程去主内存内读取,而不是在私有内存读取(可见性)
2.同时volatile 只针对变量级使用,所以不会造成线程阻塞
3.使用volatile而不是synchronized的唯一安全情况是类中只有一个可变的域,当一个域的值依赖于它之前的值时,volatile就无法工作了,如n=n+1,n++等;
4.volatile标记的变量不会被编译器优化

synchronized

1.synchronized锁住对象,等待一个方法执行完才会去执行下一个方法(原子性)
2.但是当多个线程去抢一个对象时会出现线程阻塞
3.synchronized能对变量、方法和类进行使用(可见性和原子性)
4.synchronized标记的变量可以被编译器优化

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值