线程、进程的区别

       进程的定义:进程就是程序在一个数据集合上的一次执行过程。他与程序的区别在于程序是静态的代码,而进程是动态的执行过程。

进程的特性: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 线程睡一段时间,不丢弃锁,然后自动进入就绪态。

实际上,图中 暂停 等待 锁定 三种状态都可以归为阻塞。

最新文章

  1. list操作
  2. 第3月第11天 vs2005调试 ace编译
  3. 李洪强iOS经典面试题142-第三方框架及其管理
  4. Android中解析XML
  5. JQuery点击收起,点击展开以及部分非空小验证
  6. spoj 138
  7. open_table
  8. myEclipse6.5与数据库(SQL Server2008)连接遇到的问题(自己总结的干货)<用SSH框架的时候,用servlet+javabean+jsp的时候>
  9. PHP错误Warning: Cannot modify header information - headers already sent by解决方法
  10. 扩展ArcGIS API for Silverlight/WPF 中的TextSymbol支持角度标注
  11. jQuery之事件移除
  12. C++中4个类型转换相关的关键字/特点/应用场合
  13. BIOS 品牌快捷键
  14. Python open()函数文件打开、读、写操作详解
  15. zookeeper安装教程(zookeeper3.4.5为例)
  16. Day 4-6 xml处理
  17. .NET 同步与异步 之 警惕闭包(十)
  18. 使用Log4net创建日志及简单扩展
  19. 用C语言编程自动生成四则运算
  20. C#直接用数字定义背景颜色

热门文章

  1. ElasticSearch全文搜索引擎
  2. js实现3D切换效果
  3. 【经验分享】ASP.NET 的 Page_Load 执行了2次,真的!
  4. RocketMQ中Broker的HA策略源码分析
  5. 使用CXF实现WebService
  6. android ——Toolbar
  7. 三层架构(MVC)实现简单登陆注册验证(含验证码)
  8. 洛谷 P3628 特别行动队
  9. 简述关于ASP.NET MVC与.NET CORE 的区别
  10. Django Mysql数据库-聚合查询与分组查询