Java多线程系列 基础篇04 synchronized(同步锁)

1. 为什么要使用synchronized

当存在多个线程操作共享数据时,就会出现线程安全问题,此刻需要保证同一时刻有且只有一个线程在操作共享数据,其他线程必须等到该线程处理完数据后再进行,这样才能保证线程结果的正确性。synchronized(互斥锁)就是解决这问题的,当共享数据被当前正在访问的线程加上互斥锁后,在同一个时刻,其他线程只能处于阻塞状态,直到当前线程释放该锁。

2. synchronized的三种使用方式

1. 修饰实例方法,作用于当前实例加锁,进入同步代码前要获得当前实例的锁
2.修饰静态方法,作用于当前类对象加锁,进入同步代码前要获得当前类对象的锁
3.修饰代码块,指定加锁对象,对给定对象加锁,进入同步代码库前要获得给定对象的锁。

猜你喜欢

转载自www.cnblogs.com/lizhouwei/p/9064582.html