加入收藏 | 设为首页 | 会员中心 | 我要投稿 我爱制作网_池州站长网 (https://www.0566zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Unix > 正文

面试中被问到线程是如何切换的应该怎么回答呢?

发布时间:2022-11-05 11:04:32 所属栏目:Unix 来源:
导读:  同学你好,

  1、同学可以回答线程的6个状态:

  ①初始(NEW):新创建了一个线程对象,但还没有调用start()方法。

  ②运行(RUNNABLE):Java线程中将就绪(ready)和运行中(running)两种状态
  同学你好,
 
  1、同学可以回答线程的6个状态:
 
  ①初始(NEW):新创建了一个线程对象,但还没有调用start()方法。
 
  ②运行(RUNNABLE):Java线程中将就绪(ready)和运行中(running)两种状态笼统的成为“运行”。
 
  线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取cpu 的使用权,此时处于就绪状态(ready)。就绪状态的线程在获得cpu 时间片后变为运行中状态(running)。
 
  ③阻塞(BLOCKED):表线程阻塞于锁。
 
  ④等待(WAITING):进入该状态的线程需要等待其他线程做出一些特定动作(通知或中断)。
 
  ⑤超时等待(TIME_WAITING):该状态不同于WAITING,它可以在指定的时间内自行返回。
 
  ⑥终止(TERMINATED):表示该线程已经执行完毕。
 
  线程状态切换unix线程切换,
 
  2、重量级锁指的就是一般意义上synchronized的同步方式,通过对象内部的监视器(monitor)实现,其中monitor的本质是依赖于底层操作系统的Mutex Lock实现,操作系统实现线程之间的切换需要从用户态到内核态的切换, 切换成本非常高。
 
  3、线程的切换是进程切换的基础。
 
  每一个进程都包含一个映射表,如果进程切换了,那么程序选择的映射表肯定也不一样;进程的切换其实是包含两个部分的,第一个指令的切换,第二个映射表的切换。指令的切换就是从这段程序跳到另外一段程序执行,映射表切换就是执行不同的进程,所选择的映射表不一样。线程的切换只有指令的切换,同处于一个进程里面,不存在映射表的切换。进程的切换就是在线程切换的基础上加上映射表的切换。
 
  如果我的回答解决了你的疑惑,请采纳!祝学习愉快~
 

(编辑:我爱制作网_池州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章