课程名称: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
共同學(xué)習(xí),寫下你的評(píng)論
評(píng)論加載中...
作者其他優(yōu)質(zhì)文章