每日三道面试题,通往自由的道路7——多线程篇

时间:2021-06-29 15:27:26   收藏:0   阅读:0

茫茫人海千千万万,感谢这一秒你看到这里。希望我的面试题系列能对你的有所帮助!共勉!

愿你在未来的日子,保持热爱,奔赴山海!

每日三道面试题,成就更好自我

今天我们继续聊一点别的吧,今天我们聊下多线程

1. 你可以讲下进程与线程的区别?为什么要用多线程?

不错不错,线程知识也有涉及!

2. 什么是上下文切换?

上下文切换一般发生在多线程情况下,因为一个 CPU 核心在任意时刻只能被一个线程使用,为了让这些线程都能得到有效执行,CPU 采取的策略是为每个线程分配时间片并轮转的形式。而在多核cpu下,多线程是并行工作的,如果线程数多,单个核又会并发的调度线程,运行时就会让一个线程的时间片用完的时候就会重新处于就绪状态让给其他线程使用,这个过程就属于上下文切换。

对于我们Java程序线程来说,一旦一个线程抢占到CPU资源的使用权后,另一个线程需要保存当前的一个状态,以便下次抢占成功后可以回到当前状态,JVM中有块内存地址叫程序计数器,用于记录保存线程执行到哪一行代码,它是每个线程独有的。执行任务从保存到再次加载的过程就是上下文切换。

实际上,上下文切换也是对系统意味着来说会消耗大量的CPU时间,消耗大量资源。

以下几种情况会发生上下文切换。

  1. 线程的cpu时间片用完
  2. 在发生垃圾回收的时候
  3. 我们自己调用了 sleep、yield、wait、join、synchronized、lock 等方法

可以,那问你最后一道:

3. 说说你知道的几种创建线程的方式

创建线程有以下方式:

需要注意三者的区别:

小伙子不错嘛!今天就到这里,期待你明天的到来,希望能让我继续保持惊喜!

注: 如果文章有任何错误和建议,请各位大佬尽情留言!如果这篇文章对你也有所帮助,希望可爱亲切的您给个三连关注下,非常感谢啦!

技术图片

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!