您的位置 首页 java

Java多线程中锁的理解与使用(六)———–synchronized实战

博主将会针对 Java 面试题写一组文章,包括 J2ee ,SQL,主流Web框架,中间件等面试过程中面试官经常问的问题,欢迎大家关注。一起学习,一起成长。

synchronized 可重入锁验证:

代码demo:

代码Demo

log:

 线程 :-【 多线程 0】-进入等待状态!
线程:-【多线程2】-进入等待状态!
线程:-【多线程3】-进入等待状态!
线程:-【多线程4】-进入等待状态!
线程:-【多线程1】-进入等待状态!
已设置设置-【多线程0】-名称!
获取-【多线程0】-线程名称!
已设置设置-【多线程1】-名称!
获取-【多线程1】-线程名称!
已设置设置-【多线程4】-名称!
获取-【多线程4】-线程名称!
已设置设置-【多线程3】-名称!
获取-【多线程3】-线程名称!
已设置设置-【多线程2】-名称!
获取-【多线程2】-线程名称!
 

分析LOG、得出结论:

1.set()方法中顺利进入了get()方法,说明synchronized的确是可 重入锁

2.【多线程0】先进入get方法体,这个时候【多线程1】、【多线程2】、【多线程3】等待进入,但当【多线程1】离开时,【多线程4】却先进入了方法体,没有按照1、2、3、4的顺序进入get方法体,说明sychronized的确是 非公平锁

3.在一个线程进入get方法体后,其他线程只能等待,无法同时进入,验证了synchronized是 独占锁。

参考资料

文章来源:智云一二三科技

文章标题:Java多线程中锁的理解与使用(六)———–synchronized实战

文章地址:https://www.zhihuclub.com/194132.shtml

关于作者: 智云科技

热门文章

网站地图