Java中的内核线程是什么?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
Java可以用来干什么
Java主要应用于:1. web开发;2. Android开发;3. 客户端开发;4. 网页开发;5. 企业级应用开发;6. Java大数据开发;7.游戏开发等。
1、概念
内核线程是直接由操作系统内核控制的,内核通过调度器来完成内核线程的调度并负责将其映射到处理器上执行。内核态下的线程执行速度理论上是最高的,但是用户不会直接操作内核线程,而是通过内核线程的接口——轻量级进程来间接的使用内核线程。这种轻量级进程就是所谓的线程。
2、优点
由于内核线程的支持,每一个线程都是一个独立的单元,因此就算某一个线程挂掉了,也不会导致整个进程挂掉。
3、缺点
这种实现方式也存在局限性。由于是基于内核线程实现的,所以当涉及到线程的操作时(创建、运行、切换等)就涉及到系统调度,而系统调度则会导致用户态和内核态之间的来回切换,代价是比较昂贵的。
知识点扩展:
线程的实现
线程是比进程更轻量级的调度执行单位,在linux里面,线程和进程没有什么区别,唯一的就是在地址空间,线程的切换虚拟内存空间依然是相同的,但是进程切换是不同的。
目前主流的操作系统都提供的线程实现,java则提供的线程实现方法都是native的,因为不同的硬件和操作系统提供线程调度方式并不尽相同,所以java没用采用和平台无关的统一手段来实现。
用户线程实现
用户线程指不需要内核支持而在用户程序中实现的线程,其不依赖于操作系统核心,应用进程利用线程库提供创建、同步、调度和管理线程的函数来控制用户线程。
不需要用户态/核心态切换,速度快,操作系统内核不知道多线程的存在,因此一个线程阻塞将使得整个进程(包括它的所有线程)阻塞。使用用户线程实现的程序一般都比较复杂,java曾经用过,不过最后还是放弃了。
优点:
切换由用户态程序自己控制内核切换,不需要内核干涉,少了进出内核态的消耗。
缺点:
多核处理器很难讲线程映射到其他处理器上,单线程阻塞会造成该进程阻塞。
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网行业资讯频道,感谢您对编程网的支持。