JAVA基础进阶学习(14)--线程锁
2021/7/6 17:43:03
本文主要是介绍JAVA基础进阶学习(14)--线程锁,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
总结一 :认识同步监视器(锁)
synchronize(同步监视器){
1.必须是引用数据类型,不能是基本数据类型;
2.在同步代码块中可以改变同步监视器对象的值,但不能改变引用类型;
3.尽量不要使用String和包装类Integer做同步监视器,如果使用了,只要保证代码块中不对其进行任何操作也没有关系;
4.一般只要给共享资源使用同步监视器即可;
5.建议使用final修饰同步监视器;
}
总结二 :同步代码块的执行过程
1.第一个线程来到同步代码块,发现同步监视器OPEN状态,需要先CLOSE,然后执行逻辑代码;
2.第一个线程执行过程中,发现了线程切换(阻塞、就绪),第一个线程失去cpu,但是锁依旧把持没有open;
3.第二个线程获取了CPU,来到了同步代码块,发现同步监护器CLOSE,无法打开,所以不能执行逻辑代码,第二个线程也进入阻塞状态;
4.第一个线程再次获取CPU,执行后续逻辑代码并完成,释放锁close;
5.第二个线程获取到cpu,来到同步代码块,先加锁,执行逻辑代码(重复该流程)。
注意:同步代码块中可以切换线程,但是由于锁处于close状态,所以新线程并不能执行,只能处于阻塞状态!
总结三:
线程同步优点:安全
缺点:效率低,容易死锁
这篇关于JAVA基础进阶学习(14)--线程锁的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-28微服务架构中API版本控制的实践
- 2024-09-28AI给的和自己写的Python代码,都无法改变输入框的内容,替换也不行
- 2024-09-27Sentinel配置限流资料:新手入门教程
- 2024-09-27Sentinel配置限流资料详解
- 2024-09-27Sentinel限流资料:新手入门教程
- 2024-09-26Sentinel限流资料入门详解
- 2024-09-26Springboot框架资料:初学者入门教程
- 2024-09-26Springboot框架资料详解:新手入门教程
- 2024-09-26Springboot企业级开发资料:新手入门指南
- 2024-09-26SpringBoot企业级开发资料新手指南