首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

多线程的共享变量的内存不可见性

同步值之synchronized和volatile的区别 相同点:   synchronized 和 volatile都能用来同步共享变量 不同点:   1. volatile是轻量级的同步策略, 可以修饰基本类型的变量,如int, synchronized是重量级的同步策略,基于对象的同步锁   2. volatile不具备互斥性, 一个线程访问共享变量 , 其他线程也可以访问共享变量     synchronized是互斥锁, 具备互斥性, 在被锁的代码块上只能有一个线程访问共享变量   3. volatile不能保证变量的原子性, 即一组对共享变量的操作不具备事务(要么全部完成,要么全部不完成) 如 i++/i-- 即一个线程在进行一组操作中还没完成时, 其他线程也能进入这组操作对共享变量进行修改 而 synchronized则能保证一组对共享变量操作的原子性, 即这组操作全部完成,才能进行下一轮操作 即在被锁的代码块中只能允许一个线程去执行这组操作, 其他需要执行这组操作的线程会进入阻塞状态,等待其完成 总结:

02
领券