多线程模型:
- 用户线程
- 内核线程
- 多对一模型:多个用户级线程映射到一个内核线程,线程管理是由线程库在用户空间进行的,效率高,若一个线程阻塞系统调用,整个进程会阻塞。只能运行在单处理器上。
- 一对一模型:将每个用户线程映射到一个内核线程。一个线程执行阻塞系统调用时,能允许另一个线程继续执行。可并行运行在多处理系统上。每创建一个用户线程就需要创建一个相应的内核线程,创建内核线程会影响应用程序的性能。
- 多对多模型:多个用户线程复用同样数量或更小数量的内核线程。可创建任意多的用户线程,并且相应内核线程能在多处理系统上并发执行,避免上两个模型的缺点。
线程库:为程序员提供创建和管理线程的API
- 在用户空间中提供一个没有内核支持的库,库的到吗和数据结构都存在于用户空间中,调用库的一个函数只导致用户空间中的一个本地函数的调用
- 执行一个由操作系统直接支持的内核级的库,库的代码和数据结构存在于内核空间中,调用库中的一个API函数通常会导致对内核的系统调用
JAVA线程API允许线程早java程序中直接创建和管理,但大多数JVM实例运行在宿主操作系统上,java线程API通常采用宿主系统上的线程库实现。