synchronized关键字

1修饰一个方法
在方法前加关键字synchronized即可,锁对象属于类的实例

synchronized public void add(){
//todo
}

注意:
1)A线程持有object对象的Lock锁,B线程可以以异步的方式调用object对象中的非synchronized方法
2)同步不具有继承性
子类覆盖了父类synchronize关键字修饰的方法,若子类方法没有用synchronized修饰,则默认没有同步
2synchronized同步语句块
同步方法的弊端:当同步方法执行较长时间任务时,等待时间长
1)当一个线程访问object的一个synchronized同步代码块时,另一个线程仍然可以访问该object对象中的非synchronized(this)同步代码块,相比于同步方法缩小了同步范围,运行时间缩短,运行效率加快
2)当一个线程访问object的一个synchronized(this)同步代码块时,其他线程对同一个object中所有synchronized(this)同步代码块的访问将被阻塞
3)synchronized(this)锁定的是当前对象
4)多个线程调用同一个对象中不同名称的synchronized同步方法或是synchronized(this)同步代码块时,调用的效果就是按顺序执行,也就是同步的,阻塞的
3将任意对象作为对象监视器synchronized(非this对象x)
4静态同步synchronized方法与synchronized(class)代码块,给Class类上锁,锁定的是类的所有对象

public class Service{
public static void printA(){
synchronized(Service.class){
}
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值