Java线程与Linux内核线程的映射关系
http://blog.sina.com.cn/s/blog_605f5b4f010198b5.html
Linux从内核2.6開始使用NPTL (Native POSIX Thread Library)支持,但这时线程本质上还轻量级进程。
Java里的线程是由JVM来管理的。它怎样相应到操作系统的线程是由JVM的实现来确定的。
Linux 2.6上的HotSpot使用了NPTL机制,JVM线程跟内核轻量级进程有一一相应的关系。线程的调度全然交给了操作系统内核。当然jvm还保留一些策略足以影响到其内部的线程调度。举个样例。在linux下,仅仅要一个Thread.run就会调用一个fork产生一个线程。
Java线程在Windows及Linux平台上的实现方式,如今看来,是内核线程的实现方式。这样的方式实现的线程,是直接由操作系统内核支持的——由内核完毕线程切换,内核通过操纵调度器(Thread Scheduler)实现线程调度,并将线程任务反映到各个处理器上。内核线程是内核的一个分身。程序一般不直接使用该内核线程,而是使用其高级接口,即轻量级进程(LWP)。也即线程。
这看起来可能非常拗口。看图:
(说明:KLT即内核线程Kernel Thread,是“内核分身”。
每个KLT相应到进程P中的某一个轻量级进程LWP(也即线程)。期间要经过用户态、内核态的切换,并在Thread Scheduler 下反应到处理器CPU上。)
这样的线程实现的方式也有它的缺陷:在程序面上使用内核线程,必定在操作系统上多次来回切换用户态及内核态;另外,由于是一对一的线程模型,LWP的支持数是有限的。
java程序里我们能够通过以下的一行代码得到这个数量:
假设我们仅仅拥有与内核数量一样多的线程。即使我们有任务要运行,他们也不能运行。由于处理器没有能够用来调度的线程。
假设有很多其它的时间被堵塞。那么就是IO密集型的程序,则能够开辟很多其它的线程。
于是我们能够得到以下的线程数量计算公式:
转载于:https://www.cnblogs.com/llguanli/p/7095457.html
Java线程与Linux内核线程的映射关系相关推荐
- java线程和linux线程,Java线程与Linux内核线程的映射关系
Linux从内核2.6开始使用NPTL (Native POSIX Thread Library)支持,但这时线程本质上仍是轻量级进程(LWP). Java里的线程是由JVM来管理的,它如何对应到操做 ...
- java线程和linux线程,【转】Java线程与Linux内核线程的映射关系
[暴力,STL,水]UVa 1523 - Helicopter Since ancient time, people have been dreaming of flying in the sky. ...
- 【Linux 内核】进程管理 ( 内核线程概念 | 内核线程、普通进程、用户线程 | 内核线程与普通进程区别 | 内核线程主要用途 | 内核线程创建函数 kernel_thread 源码 )
文章目录 一.内核线程概念 二.内核线程.普通进程.用户线程 三.内核线程.普通进程区别 四.内核线程主要用途 五.内核线程创建函数 kernel_thread 源码 一.内核线程概念 直接 由 Li ...
- Linux内核线程kernel thread详解--Linux进程的管理与调度(十)【转】
转自:https://blog.csdn.net/gatieme/article/details/51589205 版权声明:本文为博主原创文章 && 转载请著名出处 @ http:/ ...
- Linux内核线程kernel thread详解--Linux进程的管理与调度
内核线程 为什么需要内核线程 Linux内核可以看作一个服务进程(管理软硬件资源,响应用户进程的种种合理以及不合理的请求). 内核需要多个执行流并行,为了防止可能的阻塞,支持多线程是必要的. 内核线程 ...
- Linux内核信号杀死内核线程,linux内核线程对信号的处理过程.
linux中的线程分为用户线程和内核线程,用户线程是规范的线程,全面的自主性,全面的抢占性:然而内核线程就不那么好了,某种含义上未曾用户线程那么安逸,这个怎么会意呢?用户线程的编写者只必需告终利用逻辑 ...
- linux内核 thread,Linux内核线程kernel thread详解
内核线程 为什么需要内核线程 Linux内核可以看作一个服务进程(管理软硬件资源,响应用户进程的种种合理以及不合理的请求). 内核需要多个执行流并行,为了防止可能的阻塞,支持多线程是必要的. 内核线程 ...
- 【Linux内核】内存映射原理
[Linux内核]内存映射原理 物理地址空间 物理地址是处理器在总线上能看到的地址,使用RISC(Reduced Instruction Set Computing精简指令集)的处理器通常只实现一个物 ...
- linux内核线程创建销毁机制
这个话题乍一听貌似比较大,其实线程创建本身就是一件很平常的事情. 下面将要介绍的是,新版linux中创建内核线程的机制做了一些变化(其实本质没变,最终还是调用do_fork()来实现),和控制线程的时 ...
最新文章
- 金智教育CTO:大数据人才培养要先行一步
- 【BZOJ】3542: DZY Loves March
- (组合)Binomial Showdown
- python3 获取 当前作用域 全部参数的内置方法 locals()
- go float64 转int_深挖Go函数之深度解析(下):可变参数
- 理论计算机科学研究生,清华大学理论计算机科学中心姚期智组招收保送研究生,请帮忙发到虎...
- javafx树视图加选框_JavaFX缺少的功能调查:表视图
- Electron是个啥?
- python(11)-if语句,断言assert
- matlab中 s 函数简记
- 需求管理与分析——需求池
- 根据TTL值判断目标主机的类型
- Devexpress ASP.NET最新版开发.NET环境配置Visual Studo和SQL Server对应版本
- 传输层 可靠传输 连续ARQ协议和滑动窗口协议
- 进入加密的QQ空间方法
- 【一年总结】我的大三
- pytorch中dim的含义及相关做法
- 懒惰删除JAVA,Redis的新特性懒惰删除Lazy Free详解
- 众昂矿业:萤石需求异军突起
- 菜鸟教程Python教程100例(三)(持续更新)
热门文章
- docker ps 和docker ps -a
- 解决redis-cli连接时出现Could not connect to Redis at 127.0.0.1:6379: Connection refused
- 湖北大学 计算机考研,湖北大学考研难吗?一般要什么水平才可以进入?
- 好分数阅卷3.0_自考通过率低?一位资深阅卷老师的自述
- 后端开发应该掌握的 Redis 基础
- 16个烧光你脑细胞的悖论
- 以下十种性格的人不适合做程序员,你​赞同吗? ​
- c#form+mysql储存读取图片_C#从SQL server数据库中读取l图片和存入图片
- 好奇心机制_好奇心问题
- 前端人员如何在linux服务器上搭建npm私有库