JVM原理(二一):JVM虚拟机线程的实现

1. 线程的实现

线程是比进程更轻量级地调度执行单位,线程地引入,可以把一个进程地资源分配和执行调度分开,各个线程即可以共享进程资源,又可以独立调用。

目前线程是Java里面进行处理资源调度地最基本单位,但是日后可能会出来纤程。

Thread这个特别的类所有方法都用Native声明。

实现线程的三种方式:

  1. 使用内核线程实现(1:1实现)

  2. 使用用户线程实现(1:N实现)

  3. 使用用户线程加轻量级进程混合实现(N:M实现)

1.1. 内核线程实现

内核线程(Kernel-Level Thread, KLT) 就是直接由操作系统内核(Kernel, 下称内核) 支持的线程。


优点:由于内核线程的支持,每个轻量级进程都成为一个独立的调度单元,即使其中某一个轻量级进程在系统调用中被阻塞了,也不会影响整个进程继续工作。

缺点:要消耗内存资源,所以一个系统支持地轻量级进程地数量是有限的。


1.2. 用户线程实现

概念:而狭义上的用户线程指的是完全建立在用户空间的线程库上,系统内核不能感知到用户线程的存在及如何实现的。


优点:快速且低消耗,能够支持更大地线程数量。

缺点:线程的创建、销毁、切换和调度都需要用户自己手动完成。


GoLang、Erlang都使用这种线程。

Java、Ruby以前使用,但现在弃用了。

1.3. 混合实现

将内核进程与用户线程一起使用地实现方式。


优点:降低阻塞、得到平衡

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值