重量级锁,用于实现同步。(同步是指在多个线程并发访问共享数据时,保证共享数据在同一时刻只被一个线程使用)
具体使用形式
1、同步方法块
锁是Synchronized括号里配置的对象,只作用一个对象,如果两个线程调用同一个类不同对象的同步代码块,这两个线程不需要同步。
public void func(){
synchronized(this){
// ...
}
}
2、普通同步方法
锁是当前实例对象,和同步代码块一样,作用于同一个对象
public synchronized void func(){
//....
}
3、静态同步方法
锁是当前类的Class对象,作用于整个类,两个线程调用同一类的不同对象也会进行同步
public synchronized static func(){
// ...
}
4、同步一个类
作用于整个类
public void func(){
synchronized (SynchronizedExample.class){
//...
}
}