Java中的线程实现

Java中线程的实现方式

Posted by Booogu on February 27, 2021
353 字 2 分钟

线程实现几种方式:

  • 内核线程实现:轻量级线程与内核线程之间的1:1关系
    • 缺点:线程的创建、析构、同步等所有操作,都是由系统调用的方式实现的,需要进行用户态和核心态切换,成本高
  • 用户线程实现:进程与用户线程的1:N关系
    • 优势:不需要系统内核支援(快)
    • 缺点:没有系统内核支援(需要用户自己处理线程创建等所有操作,比较难实现)
  • 混合实现:用户线程与轻量级进程之间M:N关系

Java中的线程实现

目前主流商用JVM都是基于操作系统原生线程模型实现的。

为什么JVM规范不限制线程模型的具体实现?

操作系统支持怎样的线程模型,在很大程度上会影响上面JVM的线程时怎样映射的,因此在不同平台上很难达成一致,因此不做限定

线程调度方式

  • 协同式:由Java线程本身控制如何切换线程等
  • 抢占式:由系统来为每个线程分配执行时间(Java采用的形式)