原文网址:Java多线程--synchronized与volatile、ReentrantLock的区别_IT利刃出鞘的博客-CSDN博客
简介
本文介绍Java的synchronized的对比,包括:synchronized与volatile的区别,synchronized与Lock的区别,synchronized与ReentrantLock的区别。
synchronized与volatile
项 | synchronized | volatile |
作用 | 锁定当前对象,只有当前线程可以访问该对象,其他线程被阻塞。 | 本质是在告诉 jvm 当前变量在寄存器(工作内存)中的值是不确定的,需要从主存中读取; |
使用范围 | 变量、方法、和类 | 变量 |
线程安全 | 可以保证变量的可见性和原子性 | 仅能实现变量的可见性,不能保证原子性 |
阻塞 | 可能会造成线程的阻塞 | 不会造成线程的阻塞 |
优化 | 标记的变量可以被编译器优化 | 标记的变量不会被编译器优化 |
synchronized与Lock
上边是文章的部分内容,为便于维护,全文已迁移到此网址:synchronized与volatile、ReentrantLock的区别 - 自学精灵