- 浏览: 459421 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (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 1341实现虚拟机VMware上linux与windows互相复制 ... -
java 语法糖 分析(一,泛型与类型擦除)
2014-09-18 11:14 532语法糖是一种计算机术语,是为了更加方便理解计算机语言或者说 ... -
Java 读写锁demo
2014-09-11 15:27 731java 读写锁 原理 和 实例 package thread ... -
java 语言的静态多分派和动态单分派 的特性
2014-09-10 18:23 1104Java 语言的静态多分派和动态单分派特性。 先来熟悉概念: ... -
字节码验证 的高度对jvm的优化
2014-09-09 16:08 1164程序员对虚拟机的优化 ... -
接口与类的真正区别
2014-09-09 14:50 439接口与类不存在区别,除了字面修饰符不同外,其真正区别是: 当 ... -
jvm 初始化static 变量的类顺序
2014-09-09 14:42 719class Nolization{ static{ ... -
java static 类型变量定义技巧
2014-09-05 18:33 879java 变量的定义非常重要,在一定程度上可以减轻服务 ... -
eclipse 启动参数配置
2014-09-05 16:44 392参数见附件 -
too many open files 异常
2014-09-05 14:08 547每个Socket 连接都有 Receive 和 s ... -
堆转储快照(dump)的分析
2014-09-05 13:50 1096dump ,堆转储快照的详细分析,后面分析啊,现在没时 ... -
高性能硬件上的程序部署策略
2014-09-04 18:12 510一个15万pv、天左右 ... -
jsp 页面 查看线程堆栈状况
2014-09-04 15:53 662jsp 页面 查看线程堆栈信息状况 具体见 附件 -
jvm 本地方法栈(native Method stacks) 基本概念
2014-09-03 15:38 1113Java 虚拟机 运行时数据区域 一般可区分为 :方法区,堆 ... -
jvm 栈 基本概念
2014-09-03 15:10 542java 程序员 通常把java程序运行时的内存 分为 堆内存 ...
相关推荐
深入 Java 虚拟机.pdf ...Java 虚拟机提供了一个平台无关的环境,允许 Java 程序在不同的操作系统和硬件平台上运行。Java 虚拟机也提供了自动内存管理、垃圾收集、多线程支持等功能,提高了 Java 程序的可靠性和性能。
Java多线程编程实战指南...本书以基本概念、原理与方法为主线,辅以丰富的实战案例和生活化实例,并从Java虚拟机、操作系统和硬件多个层次与角度出发,循序渐进、系统地介绍Java平台下的多线程编程核心技术及相关工具。
与Sun Microsystems(现在被Oracle收购)的Java虚拟机不同,微软的版本在某些时期提供了与Windows更紧密的集成,尤其是在早期的Web应用中。然而,由于微软和Sun之间的许可纠纷,微软停止了对msjavax86的更新,推荐...
Java虚拟机(JVM)是实现Java技术的关键组件,它为Java程序提供了一个运行环境。Java程序在编写后会被编译成一种称为字节码的中间表示形式,这种字节码可以跨平台运行,因为JVM负责将字节码转换成机器代码。JVM的...
JVM的设计目标是实现一次编写,到处运行(Write Once, Run Anywhere),通过将Java字节码转换为特定硬件平台的机器码,使得Java程序可以在任何支持JVM的操作系统上运行。 在Java虚拟机第二版中,我们可以深入探讨...
Java虚拟机(JVM)是Java程序运行的基础,它提供了执行环境和各种内存区域,以支持Java代码的高效运行。本地方法栈是JVM的一部分,它主要负责处理与本地方法(通常是由C或C++编写)相关的调用。本地方法栈在Java线程...
"Java虚拟机wince版"指的是专门为Windows CE系统设计的Java虚拟机实现,确保在该操作系统上能够执行Java字节码。 Windows CE是一种轻量级、嵌入式操作系统,广泛应用于移动设备、工业控制设备和汽车导航系统等。...
### Java运行原理与Java虚拟机 #### 一、Java运行原理概述 Java作为一种跨平台的编程语言,其独特之处在于它的编译和解释过程。Java程序的执行涉及到两个主要步骤:首先是编译阶段,其次是解释执行阶段。 1. **...
它为Java程序提供了一个运行环境,使得Java程序可以在任何安装了JVM的操作系统上运行而无需重新编译。 #### 二、Java虚拟机的生命周期 Java虚拟机的生命周期包括启动、执行和终止三个主要阶段: 1. **启动**:当...
Java虚拟机(JVM)是Java程序运行的核心,它负责在不同操作系统上提供统一的运行环境。对于准备面试或希望深入理解JVM的开发者而言,了解JVM的各个组件和特性是必须的。本文将通过解析Java虚拟机面试题来深入探讨JVM...
5. 本地方法接口:允许JVM调用原生的C/C++代码,实现与操作系统或其他非Java库的交互。 通过学习《JAVA虚拟机解读入门》,你将能够了解JVM如何加载和解析类,以及类加载的双亲委托模型。你还将掌握栈帧的工作方式,...
《自己动手写Java虚拟机(GO语言)》是一本面向技术爱好者和程序员的书籍,它指导读者使用Go语言实现一个Java虚拟机(JVM)。这本书的编写基于《深入理解Java虚拟机》第二版以及相关的Java规范,旨在帮助读者深入...
在这个场景中,我们关注的是“jre-1_5_0_08-windows-i586-p-s.rar”这个压缩包,它包含了Java运行时环境(JRE)的1.5.0_08版本,专为Windows操作系统32位i586架构设计。 首先,让我们深入了解Java虚拟机的结构和...
JVM通过移植接口与底层操作系统和硬件进行交互,接口由适配器和Java操作系统两部分组成,其中适配器是平台依赖的。JVM之上是Java的基本类库和扩展类库,它们提供了丰富的API,供开发者编写应用程序和小程序。 Java...
《Java多线程编程实战指南(核心篇)》以基本概念、原理与方法为主线,辅以丰富的实战案例和生活化实例,并从Java虚拟机、操作系统和硬件多个层次与角度出发,循序渐进、系统地介绍Java平台下的多线程编程核心技术及...