Java基础面试每日3题:day14
2021/8/1 12:36:29
本文主要是介绍Java基础面试每日3题:day14,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录
- 1.为什么我们调用start() 方法时会执行run()方法,为什么我们不能直接调用run()方法?
- 2.说一说自己对synchronized关键字的了解
- 3.数据库中的乐观锁和悲观锁
1.为什么我们调用start() 方法时会执行run()方法,为什么我们不能直接调用run()方法?
new 一个Thread,线程进入了 新建状态;调用start()方法,会 启动一个线程,并使线程进入 就绪状态,当分配到时间片后就可以开始运行了。start()会执行线程的相应准备工作,然后自动执行run()方法的内容,这是真正的多线程工作。
而 直接执行run()方法,会把run()方法当成一个main线程下的普通方法区执行,并不会在某个线程中执行它,所以这并不是多线程工作。
总结:调用start方法方可启动线程,并使线程进入就绪状态,而run方法只是Thread 的一个普通方法调用,还是在主线程里执行。
2.说一说自己对synchronized关键字的了解
synchronized 解决的是多个线程之间访问资源的同步性,synchronized关键字能保证被它修饰的方法或代码块在任意时刻, 只能有一个线程执行。
3.数据库中的乐观锁和悲观锁
悲观:在做事情的时候总是往坏的方向想,总是 做最坏的打算。悲观锁就是每次你操作数据的时候,总想着别的线程也可能在操作该数据,所以每次读写的时候都会对线程加锁,别的线程进不来,等数据读写完之后才会放下一个线程进来
乐观:见名知意。总是在做事情的时候往好的方向想, 每次读取数据的时候 认为该数据没有被其他线程修改。乐观锁则相反,不存在加锁。
总结:读取频繁使用乐观锁,写入频繁使用悲观锁。
这篇关于Java基础面试每日3题:day14的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-102025 蛇年,J 人直播带货内容审核团队必备的办公软件有哪 6 款?
- 2025-01-10高效运营背后的支柱:文档管理优化指南
- 2025-01-10年末压力山大?试试优化你的文档管理
- 2025-01-10跨部门协作中的进度追踪重要性解析
- 2025-01-10总结 JavaScript 中的变体函数调用方式
- 2025-01-10HR团队如何通过数据驱动提升管理效率?6个策略
- 2025-01-10WBS实战指南:如何一步步构建高效项目管理框架?
- 2025-01-10实现精准执行:团队协作新方法
- 2025-01-10如何使用工具提升活动策划团队的工作效率?几个必备工具推荐
- 2025-01-10WiX 标签使用介绍:打造专业安装程序的利器