线程、进程的区别,Java的几个线程状态
2024-09-01 07:19:53
线程、进程的区别
进程的定义:进程就是程序在一个数据集合上的一次执行过程。他与程序的区别在于程序是静态的代码,而进程是动态的执行过程。
进程的特性:1.结构性,进程由程序块、数据块、进程控制块(PCB)组成;
2.动态性,进程是一次动态的执行过程,具有生命周期;
3.独立性,进程是系统分配资源和保护的基本单位;
4. 并发性,一组进程在执行时间上可以重叠,在很短的时间内轮流执行,宏观上同时执行。(并行微观上也是同 时执行)
线程则就是进程中能够独立执行的实体,是进程的一条执行路径,是处理器调度和分派的基本单位。
Java线程的几个状态以及转换
在线程 t 的执行过程中:
t.yield() 方法,自己让出当前的cpu执行权,但不丢掉已经获得的锁,从running到runnable。
Objeact里定义的 wait() 方法,在这个方法被调用后,会让一个正在运行的线程放弃所有已获取到的锁,并且进入一个等待池。
Objeact里定义的 notify() notifyAll()方法、t.interrupt()则可以唤醒被wait()的线程,让他们进入锁定池,正常的去竞争对象的锁。
在 t 的run() 方法里,调用其他线程 t1 的 join ()方法,则可以让 t1 线程插队,但不丢弃已获得的锁。t1 执行完毕后,t 再进入就绪态。
在 t 的run() 方法里,也可以调用 Thread类的静态方法,Thread.sleep(),让 t 线程睡一段时间,不丢弃锁,然后自动进入就绪态。
实际上,图中 暂停 等待 锁定 三种状态都可以归为阻塞。
最新文章
- list操作
- 第3月第11天 vs2005调试 ace编译
- 李洪强iOS经典面试题142-第三方框架及其管理
- Android中解析XML
- JQuery点击收起,点击展开以及部分非空小验证
- spoj 138
- open_table
- myEclipse6.5与数据库(SQL Server2008)连接遇到的问题(自己总结的干货)<;用SSH框架的时候,用servlet+javabean+jsp的时候>;
- PHP错误Warning: Cannot modify header information - headers already sent by解决方法
- 扩展ArcGIS API for Silverlight/WPF 中的TextSymbol支持角度标注
- jQuery之事件移除
- C++中4个类型转换相关的关键字/特点/应用场合
- BIOS 品牌快捷键
- Python open()函数文件打开、读、写操作详解
- zookeeper安装教程(zookeeper3.4.5为例)
- Day 4-6 xml处理
- .NET 同步与异步 之 警惕闭包(十)
- 使用Log4net创建日志及简单扩展
- 用C语言编程自动生成四则运算
- C#直接用数字定义背景颜色