volatile与synchronized的内存使用情况
2016-04-01 13:40:28 0 举报
登录查看完整内容
volatile和synchronized都是Java中的关键字,用于控制多线程并发访问共享资源时的内存可见性和互斥性。volatile只能保证内存可见性,而synchronized可以保证内存可见性和互斥性。在内存使用方面,volatile不会创建任何锁或其他同步机制,因此开销较小;而synchronized会创建一个锁对象,并使用Monitor进行同步,因此开销较大。此外,synchronized还可以通过偏向锁、轻量级锁和重量级锁来提高性能。总之,volatile适用于只需要保证内存可见性的场景,而synchronized适用于需要保证内存可见性和互斥性的场景。
作者其他创作
大纲/内容
volatile变量写入
线程对其进行加锁,用于互斥访问
使用volatile时线程的内存模型
write
工作内存
read
线程主体
主内存
从主内存中读取变量信息到工作内存中
volatile变量读取
使用synchronized时线程的内存模型
一般情况下线程的内存模型
将工作内存中的变量信息刷新到主内存中
0 条评论
回复 删除
下一页