Skip to content

Latest commit

 

History

History
62 lines (35 loc) · 1.76 KB

线程.md

File metadata and controls

62 lines (35 loc) · 1.76 KB

title: 线程

date: 2017-04-10 15:01:22

categories: 编程基础

tags: [线程]


线程

线程是程序中一个单一的顺序控制流程。进程内一个相对独立的、可调度的执行单元,是系统独立调度和分派CPU的基本单位指运行中的程序的调度单位。在单个程序中同时运行多个线程完成不同的工作,称为多线程。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。

——《百度百科》

线程状态

  1. 新线程态 (new thread)

    产生一个Thread对象就产生一个新线程。但此刻没有分配到系统资源,只能启动或终止。

  2. 可运行态 (runnable)

    start()方法使新线程获得资源,调度线程执行,并调用run方法后线程处于runnable状态。runnable状态的线程可能在运行也可能不在运行

  3. 阻塞/非运行态 (not runnable)

    当以下事件发生时,线程进入非运行态

    • suspend()方法被调用
    • sleep()方法被调用
    • 线程使用wait()来等待条件变量
    • 线程处于IO请求的等待
  4. 死亡态 (dead)

    run()方法返回或其他线程调用stop(),线程进入dead状态

线程的同步

java中对于线程的同步一般需要完成以下两步:

  1. 把竞争访问的资源标识为private
  2. 使用synchronized关键字同步修改变量的方法或者代码块。

线程的实现

单处理器系统

​ 时间片调度安排,CPU在不同线程之间快速切换。

多处理器系统

​ 多线程可以并行执行,每个处理器(核)同时执行不同的线程。

线程特点

  • 线程不拥有系统资源,但是可以使用独立的资源
  • 可并发执行
  • 共享进程资源