- 浏览: 445617 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (369)
- javascript html (20)
- java (31)
- jquery (15)
- jcrop (0)
- JEECG (1)
- ajax (3)
- 反射 (3)
- VI (1)
- mysql (48)
- easyui (1)
- svn (2)
- MD5 加密 (1)
- spring (14)
- ORACLE (8)
- 经验总结 (1)
- TCP/IP协议 (1)
- ICMP协议 (1)
- eclipse (1)
- Reflect (1)
- linux (21)
- android (5)
- excel 操作 (1)
- java tree (1)
- html (1)
- plupload (1)
- mongodb (9)
- aes (1)
- python (1)
- java relax (1)
- highcharts (2)
- json (2)
- java 多线程 (30)
- maven (2)
- 设计模式 (1)
- jsp+js (2)
- 面向对象 (1)
- jvm (16)
- 缓存 (1)
- proxy (1)
- 聊侃 (1)
- 面经 (1)
- java 字节 (1)
- java 类加载器 (2)
- java 基础 (2)
- java 语法糖 (1)
- java 位运算 (1)
- 排序 (3)
- java 服务器性能优化 (19)
- 网络编程 (2)
- jvm 参数设置 (0)
- jersey (1)
- webservice (2)
- nginx+多tomcat 集成 (5)
- nginx (16)
- squid (3)
- memcached (5)
- 正则表达式 (1)
- 常用免费接口 (1)
- jpa (1)
- win7 (1)
- java处理大文件 (1)
- js正则表达式 (1)
- tomcat (1)
- java 敏感字 (1)
- 系统架构优化 (4)
- 学习 (1)
- 本地测试QQ微博第三方登陆 (1)
- java 错误 (1)
- 微信支付 (1)
- https (1)
- httpclient (1)
- awk (2)
- loadrunner (1)
- sql server 2008 (3)
- git (4)
- sql server2008 (1)
- solr (2)
- centos (1)
- 数据存储架构 (3)
- log4j (1)
- weboffice (1)
- 并发编程 (1)
- postgreSQL (0)
- ssl (1)
- openssl (1)
- activeMQ (2)
- IDEA (1)
- shell (1)
- ansible (4)
- docker (2)
- grafana (1)
- jmeter (1)
- TLS (1)
- 将博客搬至CSDN (1)
最新评论
-
dida1990:
啊喔,过去了这么久,不过还是评一个。谁说uuid的hashCo ...
高并发生成订单号(二) -
annan211:
yclovesun 写道使用了uuid,为什么还要machin ...
高并发生成订单号(二) -
yclovesun:
使用了uuid,为什么还要machineId?uuid已经可以 ...
高并发生成订单号(二) -
u013280917:
太深奥,看不懂
mysql优化特定类型的查询
java jdk 中 线程操作与虚拟机中线程操作之间的关系映射
在多cpu处理器中,一个cpu 可以映射多个 KLT指令集,一个KLT 又可以映射多个轻量级线程LWP,这里的 cpu KLT LWP 都是系统级的成员,一个轻量级线程 又对应着多个用户线程。
线程的实现方式可以有多种
1 内核线程实现
直接由操作系统内核支持的线程,内核通过操纵调度器来吧任务分配到不同的处理器 上,这种实现方式可以真正意义上的去处理多种任务。程序一般不会去直接使用内核线程,而是去实现内核线程的一种高级接口--轻量级进程LWP,轻量级进程就是我们通常意义上说的线程,只有先去实现内核线程才能实现轻量级进程,轻量级进程和内核线程是1:1 关系的线程模型。
基于内核线程的支持,每个轻量级进程可以单独成为一个调度单元,即使某个轻量级进程在系统调用中被阻塞了,也不会影响系统的整体工作进程。但是这种实现方式也有巨大的局限性,由于其是基于系统内核线程支持的,所以首先他的数量是有限的,对于处理需要大量线程处理的任务是无法实现的,其次 线程的创建 析构 同步 等操作都要涉及 系统内核线程的内核态和用户态的切换,对于资源的消耗无疑是巨大的。
2 用户线程实现
用户线程的实现,是指 线程的创建 调度 和销毁都是在用户态中完成,无需内核知道,
这种实现方式 可以非常快速而且低耗,很多数据库线程就是基于用户线程实现的。
其优势在于不需要基于系统内核线程,劣势也在于其不是基于系统内核线程的,系统内核线程只是把资源分配到进程这一级,所以对于死锁 资源阻塞 如何分配任务给其他处理器 等处理是非常困难的甚至是无法完成的。所以很多种语言放弃了这种实现方式。
3 混合实现
Solaries 系统是基于unix 实现的,她的多线程实现是基于 既有内核线程的实现也含有用户线程,用户线程的 创建 析构 销毁 还是在用户态,仍然可以支持大规模的用户线程并发,操作系统提供的轻量级进程 为 用户线程和 内核线程 之间架起了一座桥梁,为处理器映射提供了条件,由于轻量级线程的使用,使得用户线程的调用可以在轻量级线程内完成,所以很大程度的避免了阻塞。
4 java 线程的实现
java 的线程模型 很大程度上是基于操作系统的线程模型实现的。不同的平台可能会有很大的不同,虚拟机规范中也并没有规定必须基于何种线程模型来实现,对于编码和运行期来说,线程模型是透明的。
在多cpu处理器中,一个cpu 可以映射多个 KLT指令集,一个KLT 又可以映射多个轻量级线程LWP,这里的 cpu KLT LWP 都是系统级的成员,一个轻量级线程 又对应着多个用户线程。
线程的实现方式可以有多种
1 内核线程实现
直接由操作系统内核支持的线程,内核通过操纵调度器来吧任务分配到不同的处理器 上,这种实现方式可以真正意义上的去处理多种任务。程序一般不会去直接使用内核线程,而是去实现内核线程的一种高级接口--轻量级进程LWP,轻量级进程就是我们通常意义上说的线程,只有先去实现内核线程才能实现轻量级进程,轻量级进程和内核线程是1:1 关系的线程模型。
基于内核线程的支持,每个轻量级进程可以单独成为一个调度单元,即使某个轻量级进程在系统调用中被阻塞了,也不会影响系统的整体工作进程。但是这种实现方式也有巨大的局限性,由于其是基于系统内核线程支持的,所以首先他的数量是有限的,对于处理需要大量线程处理的任务是无法实现的,其次 线程的创建 析构 同步 等操作都要涉及 系统内核线程的内核态和用户态的切换,对于资源的消耗无疑是巨大的。
2 用户线程实现
用户线程的实现,是指 线程的创建 调度 和销毁都是在用户态中完成,无需内核知道,
这种实现方式 可以非常快速而且低耗,很多数据库线程就是基于用户线程实现的。
其优势在于不需要基于系统内核线程,劣势也在于其不是基于系统内核线程的,系统内核线程只是把资源分配到进程这一级,所以对于死锁 资源阻塞 如何分配任务给其他处理器 等处理是非常困难的甚至是无法完成的。所以很多种语言放弃了这种实现方式。
3 混合实现
Solaries 系统是基于unix 实现的,她的多线程实现是基于 既有内核线程的实现也含有用户线程,用户线程的 创建 析构 销毁 还是在用户态,仍然可以支持大规模的用户线程并发,操作系统提供的轻量级进程 为 用户线程和 内核线程 之间架起了一座桥梁,为处理器映射提供了条件,由于轻量级线程的使用,使得用户线程的调用可以在轻量级线程内完成,所以很大程度的避免了阻塞。
4 java 线程的实现
java 的线程模型 很大程度上是基于操作系统的线程模型实现的。不同的平台可能会有很大的不同,虚拟机规范中也并没有规定必须基于何种线程模型来实现,对于编码和运行期来说,线程模型是透明的。
发表评论
-
实现虚拟机VMware上linux与windows互相复制与粘贴
2014-11-17 13:15 1290实现虚拟机VMware上linux与windows互相复制 ... -
java 语法糖 分析(一,泛型与类型擦除)
2014-09-18 11:14 504语法糖是一种计算机术语,是为了更加方便理解计算机语言或者说 ... -
Java 读写锁demo
2014-09-11 15:27 705java 读写锁 原理 和 实例 package thread ... -
java 语言的静态多分派和动态单分派 的特性
2014-09-10 18:23 1074Java 语言的静态多分派和动态单分派特性。 先来熟悉概念: ... -
字节码验证 的高度对jvm的优化
2014-09-09 16:08 1131程序员对虚拟机的优化 ... -
接口与类的真正区别
2014-09-09 14:50 410接口与类不存在区别,除了字面修饰符不同外,其真正区别是: 当 ... -
jvm 初始化static 变量的类顺序
2014-09-09 14:42 690class Nolization{ static{ ... -
java static 类型变量定义技巧
2014-09-05 18:33 842java 变量的定义非常重要,在一定程度上可以减轻服务 ... -
eclipse 启动参数配置
2014-09-05 16:44 360参数见附件 -
too many open files 异常
2014-09-05 14:08 512每个Socket 连接都有 Receive 和 s ... -
堆转储快照(dump)的分析
2014-09-05 13:50 1065dump ,堆转储快照的详细分析,后面分析啊,现在没时 ... -
高性能硬件上的程序部署策略
2014-09-04 18:12 485一个15万pv、天左右 ... -
jsp 页面 查看线程堆栈状况
2014-09-04 15:53 644jsp 页面 查看线程堆栈信息状况 具体见 附件 -
jvm 本地方法栈(native Method stacks) 基本概念
2014-09-03 15:38 1087Java 虚拟机 运行时数据区域 一般可区分为 :方法区,堆 ... -
jvm 栈 基本概念
2014-09-03 15:10 515java 程序员 通常把java程序运行时的内存 分为 堆内存 ...
相关推荐
Java多线程编程实战指南...本书以基本概念、原理与方法为主线,辅以丰富的实战案例和生活化实例,并从Java虚拟机、操作系统和硬件多个层次与角度出发,循序渐进、系统地介绍Java平台下的多线程编程核心技术及相关工具。
《Java多线程编程实战指南(核心篇)》以基本概念、原理与方法为主线,辅以丰富的实战案例和生活化实例,并从Java虚拟机、操作系统和硬件多个层次与角度出发,循序渐进、系统地介绍Java平台下的多线程编程核心技术及...
本文从对嵌入式操作系统的讨论入手,结合Java虚拟机的原理和研究状况阐述了YJVM的设计和实现要点,体现了YJVM相比现有的嵌入式Java解决方案和Java操作系统的优势。本文的主要研究内容及成果包括: 1、作为一种...
内核线程是在内核态中实现的,需要内核的帮助。它的任务映射到各个处理器上,各种线程操作如创建、析构和同步都需要进行系统调用。由于需要在用户态和内核态之间切换,系统调用的代价相对较高。此外,每个内核线程都...
这本书的内容是帮你全面了解java虚拟机,本书第1版两年内印刷近10次,98%以上的评论全部为5星级的好评,是整个Java图书领域公认的经典著作和超级畅销书,繁体版在台湾也十分受欢迎。第2版在第1版的基础上做了很大的...
Hotspot JVM 中的 Java 线程与原生操作系统线程有直接的映射关系。当线程本地存储、缓 冲区分配、同步对象、栈、程序计数器等准备好以后,就会创建一个操作系统原生线程。 Java 线程结束,原生线程随之被回收。操作...
每条线程都有自己的工作内存(Working Memory),工作内存中保存的是主存中某些对象成员变量的拷贝,线程对所有对象成员变量的操作都是在工作内存中进行,线程之间无法相互直接访问,变量传递均需要通过主存完成。...
jvm能将字节码解释成可执行的机器码,机器码和平台相关(不同硬件环境、不同操作系统,产生的机器码不同),所以jvm在不同平台有不同的实现。也就是说,只要在不同平台上安装对应的jvm,就可以运行字节码文件,运行...
它采用了“一次编写,到处运行”的原则,即一次编写的程序可以在不同的操作系统上运行,这得益于Java虚拟机(JVM)的存在。JVM是Java的核心组成部分,它可以将Java代码解释成特定平台上的机器码,从而实现跨平台运行...
java.lang.management 提供管理接口,用于监视和管理 Java 虚拟机以及 Java 虚拟机在其上运行的操作系统。 java.lang.ref 提供了引用对象类,支持在某种程度上与垃圾回收器之间的交互。 java.lang.reflect 提供类...
JVM(Java虚拟机)是Java平台的核心组件之一,它是一个在计算机上运行Java字节码的虚拟机。JVM 提供了Java程序运行的环境和基础设施,并且具有高度的可移植性和跨平台性。 JVM 的主要功能包括字节码解释和执行、...
它只认识 xxx.class 这种类型的文件,它能够将 class 文件中的字节码指令进行识别并调用操作系统向上的 API 完成动作。所以说,jvm 是 Java 能够跨平台的核心。 JRE :英文名称(Java Runtime Environment),我们叫...
到处运行(Write Once, Run Anywhere)”,这意味着开发者可以使用Java编写应用程序,并在支持Java的任何平台上无需重新编译即可运行,这得益于其独特的跨平台性,通过Java虚拟机(JVM)实现不同操作系统上的兼容。...
每条线程都有自己的工作内存(Working Memory),工作内存中保存的是主存中某些对象成员变量的拷贝,线程对所有对象成员变量的操作都是在工作内存中进行,线程之间无法相互直接访问,变量传递均需要通过主存完成。...
java.lang.management 提供管理接口,用于监视和管理 Java 虚拟机以及 Java 虚拟机在其上运行的操作系统。 java.lang.ref 提供了引用对象类,支持在某种程度上与垃圾回收器之间的交互。 java.lang.reflect 提供类和...
二、:radio::radio::radio:JVM(Java虚拟机) Java虚拟机 (第 06 篇) 深入理解:类文件结构 Java虚拟机 (第 08 篇) 深入理解:打破双亲委派模型 三、:locked_with_key:Java多线程与并发框架:unlocked: Java多...
java.lang.management 提供管理接口,用于监视和管理 Java 虚拟机以及 Java 虚拟机在其上运行的操作系统。 java.lang.ref 提供了引用对象类,支持在某种程度上与垃圾回收器之间的交互。 java.lang.reflect 提供类和...
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...
java.lang.management 提供管理接口,用于监视和管理 Java 虚拟机以及 Java 虚拟机在其上运行的操作系统。 java.lang.ref 提供了引用对象类,支持在某种程度上与垃圾回收器之间的交互。 java.lang.reflect 提供类...
通过 JVM 的虚拟机才能在电脑系统执行 Java 应用程序(Java Application) ,这与.Net Framework 的情况一样,所以电脑上没有安装 JVM,那么这些程序将不能够执行。实现跨平 台性的方法是大多数编译器在进行 Java ...