为了账号安全,请及时绑定邮箱和手机立即绑定

【学习打卡】第2天+Synchronized简介

标签:
Java

课程名称:Java高并发之魂:synchronized深度解析

课程章节:synchronize的定义?

主讲老师:悟空

课程内容:

synchronize的定义?
Synchronized的两种用法(对象锁和类锁)

课程收获:

面试中可能存在的6个问题?考虑synchronize关键字,什么形式,什么锁?

1,一个对象(一个类的对象),两个线程,访问同一资源,如何同步?
对象锁的代码块形式或方法形式都可以。(因为是一个对象公用一把锁对象)
2,两个对象(两个类的对象),两个线程,访问同一资源,如何同步?
三种方法:synchronize修饰静态方法
静态代码块
使用公用的静态对象。
3,是第二种的一种情况:两个线程访问静态方法。
4,是第一种的一种情况:一个类的两个非静态同步方法,如何同步?
Synchronize修饰方法的形式,this对象锁。

5,synchronize修饰的方法抛出异常之后,会释放锁。Lock修饰的抛出异常不会释放锁。
6,被synchronize修饰的方法,调用没有被synchronize修饰的方法,被调用的方法不会被锁。

图片描述

str类型作为synchronize的锁,要注意常量池中的str?
str类型作为synchronize的锁,要注意常量池中的str?实现的目标是,为了实现只要str.equal相同,就要被锁上。

1, 如果这个str是new出来的,肯定hashcode不同,所以要用str.intern()方法,取常量池中的str.
2, 如果这个str就是一个写死的“”,取得就是常量池中的值,就不需要担心synchronize锁的不是同一个str

图片描述

点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消