1. 线程的实现
线程是比进程更轻量级地调度执行单位,线程地引入,可以把一个进程地资源分配和执行调度分开,各个线程即可以共享进程资源,又可以独立调用。
目前线程是Java里面进行处理资源调度地最基本单位,但是日后可能会出来纤程。
Thread这个特别的类所有方法都用Native声明。
实现线程的三种方式:
-
使用内核线程实现(1:1实现)
-
使用用户线程实现(1:N实现)
-
使用用户线程加轻量级进程混合实现(N:M实现)
1.1. 内核线程实现
内核线程(Kernel-Level Thread, KLT) 就是直接由操作系统内核(Kernel, 下称内核) 支持的线程。
优点:由于内核线程的支持,每个轻量级进程都成为一个独立的调度单元,即使其中某一个轻量级进程在系统调用中被阻塞了,也不会影响整个进程继续工作。
缺点:要消耗内存资源,所以一个系统支持地轻量级进程地数量是有限的。

1.2. 用户线程实现
概念:而狭义上的用户线程指的是完全建立在用户空间的线程库上,系统内核不能感知到用户线程的存在及如何实现的。
优点:快速且低消耗,能够支持更大地线程数量。
缺点:线程的创建、销毁、切换和调度都需要用户自己手动完成。

GoLang、Erlang都使用这种线程。
Java、Ruby以前使用,但现在弃用了。
1.3. 混合实现
将内核进程与用户线程一起使用地实现方式。
优点:降低阻塞、得到平衡

1万+

被折叠的 条评论
为什么被折叠?



