描述:什么是线程?
线程是OS(操作系统)调度CPU的最小单元,也叫轻量级进程(Light Weight Process),
在一个进程里可以创建多个线程,这些线程都拥有各自的计数器、堆栈和局部变量等属性,
并且能够访问共享的内存变量。CPU在这些线程上高速切换,让使用者感觉到这些线程在同
时执行,即并发的概念,相似的概念还有并行!
内核线程(KLT)

内核线程(KLT):系统内核管理线程(KLT),内核保存线程的状态和上下文信息,线程阻塞不会
引起进程阻塞。在多处理器系统上,多线程在多处理器上并行运行。线程的创建、调度和管
理由内核完成,效率比ULT要慢,比进程操作快
用户线程(ULT)模型

用户线程(ULT):用户程序实现,不依赖操作系统核心,应用提供创建、同步、调度和管理线程
的函数来控制用户线程。不需要用户态/内核态切换,速度快。内核对ULT无感知,线程阻
塞则进程(包括它的所有线程)阻塞。
状态

Java 中线程的状态分为 6 种:
- 初始(NEW):新创建了一个线程对象,但还没有调用 start()方法。
- 运行(RUNNABLE):Java 线程中将就绪(ready)和运行中(running)两种 状态笼统的称为“运
行”。
线程对象创建后,其他线程(比如 main 线程)调用了该对象的 start()方法。 该状态的线程位于可
运行线程池中, 等待被线程调度选中, 获取 CPU 的使用权, 此时处于就绪状态(ready)。就绪状
态的线程在获得 CPU 时间片后变为运行中 状态(running)。 - 阻塞(BLOCKED):表示线程阻塞于锁。
- 等待(WAITING):进入该状态的线程需要等待其他线程做出一些特定动作 (通知或中断)。
- 超时等待(TIMED_WAITING):该状态不同于 WAITING,它可以在指定的时 间后自行返回。
- 终止(TERMINATED):表示该线程已经执行完毕。
Comments 1 条评论