线程

来自WordPress中文文档
跳转到: 导航, 搜索

目录

线程

概念

一般来说,我们把正在计算机中执行的程序叫做进程(Process) ,而不将其称为程序(Program)。所谓线程(Thread),是进程中某个单一顺序的控制流

计算机操作系统,如Mac,Windowss系列等,大多采用多线程的概念,把线程视为基本执行单位。线程也是Java中的相当重要的组成部分之一。

作为单一顺序控制流,在运行的程序内线程必须拥有一些资源作为必要的开销。例如,必须有执行堆栈和程序计数器。在线程内执行的代码只在它的上下文中起作用,因此某些地方用"执行上下文"来代替线程。

适用范围

典型的应用

  1. 服务器中的文件管理或通信控制
  2. 前后台处理
  3. 异步处理

文件:Fwq.png

执行特性

状态

一个线程必须处于如下四种可能的状态之一:

  1. 初始态:一个线程调用了new方法之后,并在调用start方法之前的所处状态。在初始态中,可以调用start和stop方法。
  2. Runnable:一旦线程调用了start 方法,线程就转到Runnable状态,注意:如果线程处于Runnable状态,它也有可能不在运行,这是因为还有优先级和调度问题。
  3. 阻塞/ NonRunnable:线程处于阻塞/NonRunnable状态,这是由两种可能性造成的:要么是因挂起而暂停的,要么是由于某些原因而阻塞的,例如包括等待IO请求的完成。 退出:线程转到退出状态,这有两种可能性,要么是run方法执行结束,要么是调用了stop方法。
  4. 最后一个概念就是线程的优先级,线程可以设定优先级,高优先级的线程可以安排在低优先级线程之前完成。一个应用程序可以通过使用线程中的方法setPriority(int),来设置线程的优先级大小。

基本操作

  • 派生:线程在进程内派生出来,它即可由进程派生,也可由线程派生
  • 阻塞(Block):如果一个线程在执行过程中需要等待某个事件发生,则被阻塞
  • 激活(unblock):如果阻塞线程的事件发生,则该线程被激活并进入就绪队列
  • 调度(schedule):选择一个就绪线程进入执行状态
  • 结束(Finish):如果一个线程执行结束,它的寄存器上下文以及堆栈内容等将被释放
        文件:Jbcz.png 

线程的另一个执行特性是同步。线程中所使用的同步控制机制与进程中所使用的同步控制机制相同。

分类

线程有两个基本类型:

  • 用户级线程:管理过程全部由用户程序完成,操作系统内核心只对进程进行管理。
  • 系统级线程(核心级线程):由操作系统内核进行管理。操作系统内核给应用程序提供相应的系统调用和应用程序接口API,以使用户程序可以创建、执行、撤消线程。
用户
名字空间
变换
操作
导航
WordPress
工具箱