Java中内核线程理论及实例详解

网友投稿 267 2022-10-31


Java中内核线程理论及实例详解

1、概念

内核线程是直接由操作系统内核控制的,内核通过调度器来完成内核线程的调度并负责将其映射到处理器上执行。内核态下的线程执行速度理论上是最高的,但是用户不会直接操作内核线程,而是通过内核线程的接口——轻量级进程来间接的使用内核线程。这种轻量级进程就是所谓的线程。

2、优点

由于内核线程的支持,每一个线程都是一个独立的单元,因此就算某一个线程挂掉了,也不会导致整个进程挂掉。

3、缺点

这种实现方式也存在局限性。由于是基于内核线程实现的,所以当涉及到线程的操作时(创建、运行、切换等)就涉及到系统调度,而系统调度则会导致用户态和内核态之间的来回切换,代价是比较昂贵的。

知识点扩展:

线程的实现

线程是比进程更轻量级的调度执行单位,在linux里面,线程和进程没有什么区别,唯一的就是在地址空间,线程的切换虚拟内存空间依然是相同的,但是进程切换是不同的。

目前主流的操作系统都提供的线程实现,java则提供的线程实现方法都是native的,因为不同的硬件和操FBGjiNlkAv作系统提供线程调度方式并不尽相同,所以java没用采用和平台无关的统一手段来实现。

用户线程实现

用户线程指不需要内核支持而在用户程序中实现的线程,其不依赖于操作系统核心,应用进程利用线程库提供创建、同步、调度和管理线程的函数来控制用户线程。

不需要用户态/核心态切换,速度快,操作系统内核不知道多线程的存在,因此一个线程阻塞将使得整个进程(包括它的所有线程)阻塞。使用用户线程实现的程序一般都比较复杂,java曾经用过,不过最后还是放弃了。

优点:

切换由用户态FBGjiNlkAv程序自己控制内核切换,不需要内核干涉,少了进出内核态的消耗。

缺点:

多核处理器很难讲线程映射到其他处理http://器上,单线程阻塞会造成该进程阻塞。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:[!] Unable to determine Swift version for the following pods:
下一篇:target overrides the `ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES` build setting defined in `Pods/Target S
相关文章

 发表评论

暂时没有评论,来抢沙发吧~