`
annan211
  • 浏览: 445617 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

java 虚拟机线程与操作系统内核线程之间的关系

    博客分类:
  • jvm
 
阅读更多
java jdk 中 线程操作与虚拟机中线程操作之间的关系映射

  在多cpu处理器中,一个cpu 可以映射多个 KLT指令集,一个KLT 又可以映射多个轻量级线程LWP,这里的 cpu  KLT  LWP 都是系统级的成员,一个轻量级线程 又对应着多个用户线程。
  线程的实现方式可以有多种
  1 内核线程实现

     直接由操作系统内核支持的线程,内核通过操纵调度器来吧任务分配到不同的处理器 上,这种实现方式可以真正意义上的去处理多种任务。程序一般不会去直接使用内核线程,而是去实现内核线程的一种高级接口--轻量级进程LWP,轻量级进程就是我们通常意义上说的线程,只有先去实现内核线程才能实现轻量级进程,轻量级进程和内核线程是1:1 关系的线程模型。
  基于内核线程的支持,每个轻量级进程可以单独成为一个调度单元,即使某个轻量级进程在系统调用中被阻塞了,也不会影响系统的整体工作进程。但是这种实现方式也有巨大的局限性,由于其是基于系统内核线程支持的,所以首先他的数量是有限的,对于处理需要大量线程处理的任务是无法实现的,其次 线程的创建 析构 同步 等操作都要涉及 系统内核线程的内核态和用户态的切换,对于资源的消耗无疑是巨大的。

  2 用户线程实现
     用户线程的实现,是指 线程的创建 调度 和销毁都是在用户态中完成,无需内核知道,
这种实现方式 可以非常快速而且低耗,很多数据库线程就是基于用户线程实现的。
其优势在于不需要基于系统内核线程,劣势也在于其不是基于系统内核线程的,系统内核线程只是把资源分配到进程这一级,所以对于死锁  资源阻塞  如何分配任务给其他处理器 等处理是非常困难的甚至是无法完成的。所以很多种语言放弃了这种实现方式。

  3 混合实现
     Solaries 系统是基于unix 实现的,她的多线程实现是基于 既有内核线程的实现也含有用户线程,用户线程的 创建 析构 销毁 还是在用户态,仍然可以支持大规模的用户线程并发,操作系统提供的轻量级进程 为 用户线程和 内核线程 之间架起了一座桥梁,为处理器映射提供了条件,由于轻量级线程的使用,使得用户线程的调用可以在轻量级线程内完成,所以很大程度的避免了阻塞。

  4 java 线程的实现
 
   java 的线程模型 很大程度上是基于操作系统的线程模型实现的。不同的平台可能会有很大的不同,虚拟机规范中也并没有规定必须基于何种线程模型来实现,对于编码和运行期来说,线程模型是透明的。

分享到:
评论

相关推荐

    Java多线程编程实战指南(核心篇)

    Java多线程编程实战指南...本书以基本概念、原理与方法为主线,辅以丰富的实战案例和生活化实例,并从Java虚拟机、操作系统和硬件多个层次与角度出发,循序渐进、系统地介绍Java平台下的多线程编程核心技术及相关工具。

    java多线程编程实战指南 核心篇 代码

    《Java多线程编程实战指南(核心篇)》以基本概念、原理与方法为主线,辅以丰富的实战案例和生活化实例,并从Java虚拟机、操作系统和硬件多个层次与角度出发,循序渐进、系统地介绍Java平台下的多线程编程核心技术及...

    YJVM—一种运行在嵌入式Linux内核中的Java虚拟机的设计与实现

    本文从对嵌入式操作系统的讨论入手,结合Java虚拟机的原理和研究状况阐述了YJVM的设计和实现要点,体现了YJVM相比现有的嵌入式Java解决方案和Java操作系统的优势。本文的主要研究内容及成果包括: 1、作为一种...

    Java与线程.pdf

    内核线程是在内核态中实现的,需要内核的帮助。它的任务映射到各个处理器上,各种线程操作如创建、析构和同步都需要进行系统调用。由于需要在用户态和内核态之间切换,系统调用的代价相对较高。此外,每个内核线程都...

    Java虚拟机

    这本书的内容是帮你全面了解java虚拟机,本书第1版两年内印刷近10次,98%以上的评论全部为5星级的好评,是整个Java图书领域公认的经典著作和超级畅销书,繁体版在台湾也十分受欢迎。第2版在第1版的基础上做了很大的...

    Java核心面试题汇总(最新版)

    Hotspot JVM 中的 Java 线程与原生操作系统线程有直接的映射关系。当线程本地存储、缓 冲区分配、同步对象、栈、程序计数器等准备好以后,就会创建一个操作系统原生线程。 Java 线程结束,原生线程随之被回收。操作...

    java核心面试技术点

    每条线程都有自己的工作内存(Working Memory),工作内存中保存的是主存中某些对象成员变量的拷贝,线程对所有对象成员变量的操作都是在工作内存中进行,线程之间无法相互直接访问,变量传递均需要通过主存完成。...

    JDK是 Java 语言的软件开发工具包,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具 (java8)

    jvm能将字节码解释成可执行的机器码,机器码和平台相关(不同硬件环境、不同操作系统,产生的机器码不同),所以jvm在不同平台有不同的实现。也就是说,只要在不同平台上安装对应的jvm,就可以运行字节码文件,运行...

    Java 并发学习笔记:进程和线程,并发理论,并发关键字,Lock 体系,原子操作类,发容器 & 并发工具,线程池,并发实践

    它采用了“一次编写,到处运行”的原则,即一次编写的程序可以在不同的操作系统上运行,这得益于Java虚拟机(JVM)的存在。JVM是Java的核心组成部分,它可以将Java代码解释成特定平台上的机器码,从而实现跨平台运行...

    JAVA_API1.6文档(中文)

    java.lang.management 提供管理接口,用于监视和管理 Java 虚拟机以及 Java 虚拟机在其上运行的操作系统。 java.lang.ref 提供了引用对象类,支持在某种程度上与垃圾回收器之间的交互。 java.lang.reflect 提供类...

    Java知识,JVM面试资料

    JVM(Java虚拟机)是Java平台的核心组件之一,它是一个在计算机上运行Java字节码的虚拟机。JVM 提供了Java程序运行的环境和基础设施,并且具有高度的可移植性和跨平台性。 JVM 的主要功能包括字节码解释和执行、...

    Java常见面试问题整理.docx

    它只认识 xxx.class 这种类型的文件,它能够将 class 文件中的字节码指令进行识别并调用操作系统向上的 API 完成动作。所以说,jvm 是 Java 能够跨平台的核心。 JRE :英文名称(Java Runtime Environment),我们叫...

    数据结构算法Java实现。关于Java《数据结构算法》核心技术学习积累的例子,是初学者及核心技术巩固的最佳实践。.zip

    到处运行(Write Once, Run Anywhere)”,这意味着开发者可以使用Java编写应用程序,并在支持Java的任何平台上无需重新编译即可运行,这得益于其独特的跨平台性,通过Java虚拟机(JVM)实现不同操作系统上的兼容。...

    java核心面试

    每条线程都有自己的工作内存(Working Memory),工作内存中保存的是主存中某些对象成员变量的拷贝,线程对所有对象成员变量的操作都是在工作内存中进行,线程之间无法相互直接访问,变量传递均需要通过主存完成。...

    Java 1.6 API 中文 New

    java.lang.management 提供管理接口,用于监视和管理 Java 虚拟机以及 Java 虚拟机在其上运行的操作系统。 java.lang.ref 提供了引用对象类,支持在某种程度上与垃圾回收器之间的交互。 java.lang.reflect 提供类和...

    java二叉树算法源码-JavaCore:Java核心知识。集合框架、JVM机制、多线程与并发框架、网络协议、SSM框架、MySQL、分布式、

    二、:radio::radio::radio:JVM(Java虚拟机) Java虚拟机 (第 06 篇) 深入理解:类文件结构 Java虚拟机 (第 08 篇) 深入理解:打破双亲委派模型 三、:locked_with_key:Java多线程与并发框架:unlocked: Java多...

    java api最新7.0

    java.lang.management 提供管理接口,用于监视和管理 Java 虚拟机以及 Java 虚拟机在其上运行的操作系统。 java.lang.ref 提供了引用对象类,支持在某种程度上与垃圾回收器之间的交互。 java.lang.reflect 提供类和...

    java基础案例与开发详解案例源码全

    2.5 Java虚拟机简介28 2.6 Java技术两种核心运行机制29 2.7 上机练习30 第3章 3.1 变量32 3.1.1 什么是变量32 3.1.2 为什么需要变量32 3.1.3 变量的声明和赋值33 3.1.4 变量应用实例33 3.2 数据的分类34 3.2.1 Java...

    JavaAPI1.6中文chm文档 part1

    java.lang.management 提供管理接口,用于监视和管理 Java 虚拟机以及 Java 虚拟机在其上运行的操作系统。 java.lang.ref 提供了引用对象类,支持在某种程度上与垃圾回收器之间的交互。 java.lang.reflect 提供类...

    【文献综述】基于JAVA的俄罗斯方块游戏设计与实现.pdf

    通过 JVM 的虚拟机才能在电脑系统执行 Java 应用程序(Java Application) ,这与.Net Framework 的情况一样,所以电脑上没有安装 JVM,那么这些程序将不能够执行。实现跨平 台性的方法是大多数编译器在进行 Java ...

Global site tag (gtag.js) - Google Analytics