Thread & Process
进程与线程 |
定义 范围 基本状态 作用 进程 资源分配单位 完整的资源平台 就绪、阻塞、执行 并发执行程序 [提高利用率、吞吐量] 线程 CPU单位 寄存器、栈 就绪、阻塞、等待、锁定、执行 减少并发的时间和空间开销 联系:进程=线程+资源平台 [] 资源平台:地址空间[代码段、数据段]+打开文件等各种资源 线程: |
状态 |
进程 <1>就绪:Ready Ready —Running Scheduler picks this process 【进程调度】 <2>阻塞:Blocked Blocked—Ready Input becomes available <3>执行:Running Running—Blocked Process blocks for input Running—Ready Scheduler picks another process 线程<0>创建:New 分配PCB New— Runnable start() <1>就绪:Runnable 分配PCB、分配资源、线程进入主存 Runnable—Running 获取CPU <2>执行:Running 分配PCB、分配资源、线程进入主存、分配CPU Running— Runnable yield() Running—阻塞:Blocked join()、sleep() Running—等待:Blocked wait() Running—锁定:Blocked synchronized同步锁开启 Running—Dead: run()\异常退出 <3>阻塞:Blocked 阻塞:Blocked—Runnable sleep()结束、join()中断、IO完成 <4>等待:Blocked 等待:Blocked—锁定:Blocked nodity()\notifyall()\interrupt() <5>锁定:Blocked 锁定:Blocked—Runnable synchronized同步锁释放 <0> 终止:Dead 保留状态码、计时统计数据—提供其他进程收集 多线程问题:Runnable! |
线程同步与互斥 |
同步:多线程事件存在时序关系。 各线程协同合作、相互配合 互斥:多线程同时访问共享资源 [同一时刻—同一线程—共享数据] 互斥锁:1对象拥有1个互斥锁 [任意时刻,1个线程-访问对象] synchronized( 共享对象 ){ 代码块 } |
线程调度与优先级 |
线程调度:控制同一个CPU上多线程的运行顺序。[可抢占的优先级调度算法] N个thread:1个CPU (同一时间点:1 cpu:1thread) 线程优先级: 线程的优先级,[1-10] Thread.MIN_PRIORITR\ MAX 缺省优先级, [ 5 ] Thread.NORM_PRIORITR 举例:main 调度队列:Priority Number——Runable threads |
生产者与消费者 |
多线程multithreadin |
定义:从软件或者硬件上实现多个线程并发执行的技术。 硬件:同一时间执行多于一个线程 1 time : n Thread 软件:一个程序中,独立运行的程序片段叫作“线程”(Thread), 程序:Computer Program 一系列指令的集合 程序=数据+进程控制块=数据结构+算法 |
Thread.State: NEW 新建状态 RUNNABLE 就绪状态 BLOCKED 阻塞状态 WAITING TIMED_WAITING TERMINATED |