Java教程

Java线程

本文主要是介绍Java线程,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、线程是什么

  线程是比进程更轻量的调度单位,线程可以共享进程资源(内存地址、文件I/O等),又可以独自调度。

  Java中,线程是处理器执行调度的最基本单位。

  主流操作系统都提供了线程实现,Java语言提供了不同操作系统平台和不同硬件下对线程的同一处理。

二、线程分类

  1. 内核线程

    内核线程(Kernel-level Thread,KLT)是操作系统内核支持的线程,操作系统内核通过操作调度器(Scheduler)对内核线程进行调度切换,并将内核线程任务映射到各个处理器上,内核线程可以称为处理器的分身。从而让每个处理器具有处理多事务的能力。支持多线程的内核称为多线程内核(Multi-Threads Kernel)。由于受内核和处理器限制,内核线程数是受限的,不能大规模创建和并发。

  2. 轻量级进程

    轻量级进程是指内核线程的高级接口,每个轻量级进程都需要内核线程支持。通常开发不会直接使用内核线程,而是通过内核线程的高级接口使用轻量级进程,轻量级进程通常也称为用户线程。轻量级进程和内核线程是1对1的关系。

  3. 用户线程

    广义上说只要不是内核线程都是用户线程,从定义上轻量级进程也属于用户线程,但是,轻量级进程的调度是建立在系统内核之上的,是由操作系统进行调度的,在效率上收到限制,不具备用户线程的优点。

    狭义上说,用户线程是建立在用户空间的线程,系统内核是感知不到用户空间的线程的,用户空间的线程的建立、同步、销毁、调度都是有用户空间自己完成的,不需要内核的帮助。

三、线程模型

  1. 1对1关系的内核线程和轻量级进程

 

   由于轻量级进程是内核线程支持的,即使某个轻量级进程被堵塞了,也不会影响整个进程继续工作。轻量级进程也有一定的局限,由于轻量级进程是内核线程支持的,轻量级进程的创建、析构、同步都需要系统调用,而系统调用代价相对较高,需要在内核态和用户态进行切换。

  2. 1对N关系的进程和用户线程

 

 

  3. N对M关系混合模式

  内核线程和用户线程一起使用的模式,就是多对多的关系,这种关系下即有用户线程,也有轻量级进程。用户线程依然建立在用户空间,用户线程的建立、切换、析构和同步都需要用户空间维护,可以支持大规模并发实现。

  

 

 

这篇关于Java线程的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!