考点介绍:
多线程可以说是 Java 进阶必备的知识点了,也是面试中必备的考点。可能不少人能对多线程说上一二,但这还远远不够,如果碰到比较有经验的面试官再继续追问,很可能会被吊打。
本期分享的操作系统考点之多线程,分为试题、文章以及视频三部分。
答案详情解析和文章内容可扫下方二维码或链接即可查看!
一、考点题目
1. 既然 start() 方法会调用 run() 方法,为什么我们调用 start() 方法,而不直接调用 run() 方法?
正确答案:当你调用 start() 方法时,它会新建一个线程然后执行 run() 方法中的代码。如果直接调用 run() 方法,并不会创建新线程,方法中的代码会在当前调用者的线程中执行。
2. 守护线程和非守护线程有怎么区别?
正确答案:程序运行完毕,jvm会等待非守护线程完成后关闭,但是jvm不会等待守护线程。守护线程最典型的例子就是GC线程。
3. 多线程上下文切换是什么?
正确答案:多线程上下文切换就是指CPU控制权由一个已经正在运行的线程切换到另外一个就绪并等待获取CPU执行权的线程的过程。
4、有哪两种创建线程的方式?这两种方式更优的是哪个?
正确答案:两种方式:通过实现java.lang.Runnable或者通过扩展java.lang.Thread类。
5.一个线程如果出现了运行时异常怎么办?
正确答案:如果该异常没有被捕获的话,这个线程就停止执行了。但是要注意:如果这个线程持有某个对象的监视器,则这个对象监视器会被立即释放。
(答案点击下方链接或者扫海报二维码查看哦)
二、考点文章
1. 线程同步相关术语总结
对于初次接触线程同步的前端来说,总是对互斥锁、条件变量、信号量等术语傻傻分不清楚,这里根据自己的理解简单做下总结,如有疏漏之处,欢迎大家批评指正。
2. Python多线程的原理与实现
asyncio提供了完善的异步IO支持;
异步操作需要在coroutine中通过yield from完成;
多个coroutine可以封装成一组Task然后并发执行。
(扫下方海报二维码查看完整版)
三、考点视频
更多资讯可搜索校招VIP小程序查看哦。
PC端链接:https://xiaozhao.vip/dTopic/detail/236
移动端链接:https://m.xiaozhao.vip/dTopic/detail/236