关于java中的synchronized关键字

关于java中的多线程机制中的synchronized关键字

类锁:
当t1线程调用了使用synchronized修饰的静态方法的话,就会占用该类的类锁,这时如果别的线程也想要调用该类的别的使用了synchronized修饰的静态方法的话,就需要等待t1线程的结束然后才可以占用该类的类锁。

注意:如果t1线程已经占用了该类的类锁的话,别的线程也想占用该类的类锁就需要等待t1线程的占用结束,
这段代码执行的时候没有任何对象的介入,所以即使t2线程又new了一个该类新的对象然后再通过该对象调用
该类的使用synchronized修饰的静态方法的话,依然需要等待,因为调用静态方法的时候不需要对象的介入。

对象锁:
当t1线程想要调用一个类中使用了synchronized修饰的实例方法的话,那么就需要找到该类的对象锁,如果找到了该对象的锁的话就会进行占用,这时如果别的线程调用该对象别的使用了synchronized修饰实例方法或该方法的话,也会去寻找该对象的锁但是该对象的锁已经被t1占用,它必须等待t1的代码执行完毕之后,然后归还该对象的锁,它才可以进行占用。

注意:要区分好对象锁和类锁,如果一个线程调用了t1类中使用synchronized修饰的实
例方法,另一个线程调用了使用synchronized修饰的静态方法,它们两个之间是不会影
响到对方的,因为一个占用的是类锁(没有对象的介入),另一个占用的是对象锁。

本人第一次写博客,写的不好望各位多多包含,感谢。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值