- 线程
线程是CPU调度的基本单位,可以把一个进程的资源分配和执行调度分开,各个线程既可以共享进程资源,又可以独立调度
- 实现线程的3种方式
- 使用内核线程实现:直接由操作系统内核支持的线程,由内核来完成线程切换,由内核通过操纵调度器对线程进行调度,并负责将线程的任务映射到各个处理器上
- 使用用户线程实现:建立在用户空间的线程库上,系统内核不能感知线程存在的实现
- 使用用户线程加轻量级进程混合:将内核进程和用户线程一起使用的实现方式
- Java 线程调度
系统为线程分配处理器使用权的过程
- 协同式线程调度:线程的执行时间由线程本身来控制,线程把自己的工作执行完了之后,要主动通知系统切换到另一个线程上
好处:实现简单,由于线程把自己的事情干完后才会进行线程切换,切换操作对线程自己是可知的
坏处:线程执行时间不可控制,如果一个线程编写有问题,一直不告诉系统进行线程切换,程序就会一直阻塞在那里 - 抢占式线程调度
每个线程将由系统来分配执行时间,线程的切换不由线程本身来决定。
好处:线程的执行时间是系统可控的,不会一个线程导致整个线程阻塞的问题
-
线程状态转换