JVM线程与Linux内核线程的映射(关系)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JVM线程与Linux内核线程的映射(关系)相关的知识,希望对你有一定的参考价值。
参考技术ALinux从内核2.6开始使用NPTL(Native POSIX Thread Library)支持,但这时线程本质上还轻量级进程。 Native POSIX Thread Library(NPTL)是Linux内核中实践POSIX Threads标准的库。POSIX线程(英语:POSIX Threads,常被缩写为Pthreads)是POSIX的线程标准,定义了创建和操纵线程的一套API。实现POSIX 线程标准的库常被称作Pthreads
Pthreads定义了一套C语言的类型、函数与常量,它以pthread.h头文件和一个线程库实现。
Pthreads API中大致共有100个函数调用,全都以"pthread_"开头,并可以分为四类:
线程管理,例如创建线程,等待(join)线程,查询线程状态等。
互斥锁(Mutex):创建、摧毁、锁定、解锁、设置属性等操作
条件变量(Condition Variable):创建、摧毁、等待、通知、设置与查询属性等操作
使用了互斥锁的线程间的同步管理
Java里的线程是由JVM来管理的,它如何对应到操作系统的线程是由JVM的实现来确定的。Linux 2.6上的HotSpot使用了NPTL机制, JVM线程跟内核轻量级进程有一一对应的关系 。线程的调度完全交给了操作系统内核,当然jvm还保留一些策略足以影响到其内部的线程调度,举个例子,在linux下,只要一个Thread.run就会调用一个fork产生一个线程。
Java线程在Windows及Linux平台上的实现方式,现在看来,是内核线程的实现方式。这种方式实现的线程,是直接由操作系统内核支持的——由内核完成线程切换,内核通过操纵调度器(Thread Scheduler)实现线程调度,并将线程任务反映到各个处理器上。内核线程是内核的一个分身。程序一般不直接使用该内核线程,而是使用其高级接口,即轻量级进程
创建用户级线程
以上是关于JVM线程与Linux内核线程的映射(关系)的主要内容,如果未能解决你的问题,请参考以下文章