概述
使用 Synchronized 关键字是解决并发问题的最简单的一种方式之一,我们只需要使用它修饰需要被并发处理的代码块、静态方法或普通方法,虚拟机自动为它加锁和释放锁,并将不能获得锁的线程阻塞在相应的同步队列上。
Synchronized是一种互斥阻塞的同步方式:它具有原子性和可见性的特征。
- 互斥性:在同一时间只允许一个线程持有某个对象锁,通过这种特性来实现多线程中的协调机制,这样在同一时间只有一个线程对需同步的代码块进行访问。互斥性我们也往往称为操作的原子性
- 可见性:确保在锁被释放之前,对共享变量所做的修改,(刷新到主内存)对于随后获得该锁的另一个线程是可见的。