大厂口试官问我Java线程和操纵体系线程的接洽
口试官:听前一个口试官说你Java并发这块把握的不错,我们深入的交换一下; 我: 看了看口试官头部稀少的结缔组织,已然认为这时势试不简朴,不外亏得事前把安琪拉的博客看了个遍,有所筹备,我答复说:咳咳,把握的还算可以。 口试官:Java线程用过的吧? 我:用过。 口试官:那你给我讲讲Java线程和操纵体系的? 我:啊!!! 剧情不该该这样的啊,开场不该该先是 synchronized 可能 volatile,再然后是线程池和AQS,怎么上来就整这玩意。 我:好的,那我分三段讲, 用户态的线程 内核态的线程 Java 线程源码 1. 用户态的线程 第一阶段: 着实早期的时辰,操纵体系是没有线程的观念,线程是后头加进来的,操纵体系刚开始只有历程,操纵体系分派资源的最小单元是历程,历程与历程之间相干断绝,每个历程有本身的内存空间,文件描写符,CPU调治以历程作为最小调治单位; 第二阶段: 初期的多线程,线程是在用户空间下实现的。 什么意思?我们都知道内存分用户空间和体系空间,体系空间是给操纵体系行使的,用户空间是应用措施行使的,应用措施假如必要会见体系空间,必要举办体系挪用,从用户态切换到内核态,这里具体可以参考我上一篇文章: [讲讲用户空间和内核空间] 那怎么在用户空间实现的多线程呢? 现实上是操纵体系按历程维度来调治,操纵体系是不去管你用户线程的切换的,应用措施本身在用户空间实现线程的建设、维护和调治。模子如下图: (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |