title: 线程
date: 2017-04-10 15:01:22
categories: 编程基础
tags: [线程]
线程是程序中一个单一的顺序控制流程。进程内一个相对独立的、可调度的执行单元,是系统独立调度和分派CPU的基本单位指运行中的程序的调度单位。在单个程序中同时运行多个线程完成不同的工作,称为多线程。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。
——《百度百科》
-
新线程态 (new thread)
产生一个Thread对象就产生一个新线程。但此刻没有分配到系统资源,只能启动或终止。
-
可运行态 (runnable)
start()方法使新线程获得资源,调度线程执行,并调用run方法后线程处于runnable状态。runnable状态的线程可能在运行也可能不在运行
-
阻塞/非运行态 (not runnable)
当以下事件发生时,线程进入非运行态
- suspend()方法被调用
- sleep()方法被调用
- 线程使用wait()来等待条件变量
- 线程处于IO请求的等待
-
死亡态 (dead)
run()方法返回或其他线程调用stop(),线程进入dead状态
java中对于线程的同步一般需要完成以下两步:
- 把竞争访问的资源标识为private
- 使用synchronized关键字同步修改变量的方法或者代码块。
时间片调度安排,CPU在不同线程之间快速切换。
多线程可以并行执行,每个处理器(核)同时执行不同的线程。
- 线程不拥有系统资源,但是可以使用独立的资源
- 可并发执行
- 共享进程资源