继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

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

一起写代码2公众号
关注TA
已关注
手记 34
粉丝 2
获赞 5

课程名称: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

图片描述

打开App,阅读手记
1人推荐
发表评论
随时随地看视频慕课网APP