1、为什么使用同步?
Java支持多线程并发开发,当多个线程同时操作一个可共享的资源变量时(例如数据的增删改查),将导致数据的不准确,相互之间产生冲突,因此加入同步锁以避免该线程在没有完成之前,被其他线程调用,从而确保了变量的唯一性和准确性。
2、同步方法
使用synchronized[ˈsɪŋkrənaɪzd]关键字修饰的方法。
**由于java的每个对象都有一个内置锁,当使用该关键字修饰的方法时,内置锁就会保护整个方法。**在调用该方法之前,需要获得内置锁,否则就处于阻塞状态。
代码如下:
public synchronized void save(){
return 0 ;
}
注:synchronized关键字也可以修饰静态方法(static),此时如果调用该静态方法,将会锁住整个类
3、同步代码块
即使用synchronized关键字修饰的语句块。被改关键字修饰的语句块会自动被加上内置锁,从而实现同步
代码如下:
synchronized(object){
}
注:同步是一种高开销的操作,因此应该尽量减少同步的内容,通常没有必要同步整个方法,所以使用synchronized代码块同步关键代码即可