1.线程的属性
线程是处理机调度的单位;
多CPU计算机中,各个线程可以占用不同的CPU;
每个线程都有一个线程ID、线程控制块;
线程有就绪、阻塞、运行三种基本状态;
线程几乎不拥有系统资源,同一进程的不同线程共享进程的资源;
由于共享内存地址空间,同一进程中的线程间通信不需要操作系统干预;
同一进程中的线程切换不会引起进程切换,不同进程中的线程切换,会引起进程切换;
切换同进程内的线程,系统开销很小,切换进程系统开销很大;
2.线程的实现方式
用户及线程:由应用程序通过线程库实现。所有的线程管理工作由应用程序负责。线程切换可以在用户态下完成,不需要操作系统干预。
内核级线程:由操作系统管理,线程调度、切换等工作都由内核负责,因此内核级线程的切换必须在核心态下才能完成。可以这样理解,内核级线程就是从操作系统内核视角才能看到的线程。内核级线程才是处理机分配的单位。
3.多线程模型
多对多模型:多个用户线程对应一个内核级线程,线程切换开销很小,但是容易阻塞,不利于并发。
一对多模型:每个用户线程都对应一个内核级线程,线程切换开销很大,但并发度很高。(JVM使用该线程模型)
多对多模型:多个用户线程对应多个内核线程,集二者之所长。