为什么使用同步以及同步方法和同步代码块的区别

1、为什么使用同步?

Java支持多线程并发开发,当多个线程同时操作一个可共享的资源变量时(例如数据的增删改查),将导致数据的不准确,相互之间产生冲突,因此加入同步锁以避免该线程在没有完成之前,被其他线程调用,从而确保了变量的唯一性和准确性

2、同步方法

使用synchronized[ˈsɪŋkrənaɪzd]关键字修饰的方法。

**由于java的每个对象都有一个内置锁,当使用该关键字修饰的方法时,内置锁就会保护整个方法。**在调用该方法之前,需要获得内置锁,否则就处于阻塞状态。

代码如下:
public synchronized void save(){
           return 0 ;
}

注:synchronized关键字也可以修饰静态方法(static),此时如果调用该静态方法,将会锁住整个类

3、同步代码块

即使用synchronized关键字修饰的语句块。被改关键字修饰的语句块会自动被加上内置锁,从而实现同步

代码如下:
synchronized(object){

}

注:同步是一种高开销的操作,因此应该尽量减少同步的内容,通常没有必要同步整个方法,所以使用synchronized代码块同步关键代码即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值