java 进程与线程 r囧r小猫 2024-04-17 05:26 85阅读 0赞 # 1,进程 # 对于操作系统来说,一个任务就是一个进程。例如:打开一个浏览器既是一个进程。 ## 多进程 ## 多余单核cpu来说,执行多任务是顺序执行的,那么怎么实现多进程呢。就是操作系统轮流地让多个任务轮流执行,但是由于轮流执行的时间非常短,所以就感觉多个进程都在同时工作。对于多核cpu才能真正地并行执行多任务。 # 2,线程 # 在同一个进程内部,也会有很多事要做,就需要同时运行多个子任务。这些进程的子任务就叫做线程,线程是最小的执行单元,而进程最少由一个线程组成 ## 多线程 ## 一个进程至少有一个线程,但是当任务较为复杂的时候,就会有多个线程同时操作 执行。与进程一样,真正的多线程需要多核cpu的支持,否则也是轮流执行。 **对于进程与线程的调度完全是由操作系统决定的,程序不能决定什么时候执行,执行多长时间。** # 3,进程与线程之间的状态转换 # 进程之间的状态及转换 ![进程之间状态及转换][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpdXRhaXlpOA_size_16_color_FFFFFF_t_70] 主要的是“就绪”,“运行”,“阻塞”三种状态; **就绪状态** 当进程已分配到除CPU以外的所有必要的资源,只要获得处理机便可立即执行,这时的进程状态称为就绪状态。 **执行状态** 当进程已获得处理机,其程序正在处理机上执行,此时的进程状态称为执行状态。 **阻塞状态** 正在执行的进程,由于等待某个事件发生而无法执行时,便放弃处理机而处于阻塞状态。引起进程阻塞的事件可有多种,例如,等待I/O完成、申请缓冲区不能满足、等待信件(信号)等。 状态之间的转换是因为cpu进行了调度与资源分配: **就绪—>执行**:对就绪状态的进程,当进程调度程序按一种选定的策略从中选中一个就绪进程,为之分配了处理机后,该进程便由就绪状态变为执行状态; **执行—>阻塞**:正在执行的进程因发生某等待事件而无法执行,则进程由执行状态变为阻塞状态,如进程提出输入/输出请求而变成等待外部设备传输信息的状态,进程申请资源(主存空间或外部设备)得不到满足时变成等待资源状态,进程运行中出现了故障(程序出错或主存储器读写错等)变成等待干预状态等等; **阻塞—>就绪**:处于阻塞状态的进程,在其等待的事件已经发生,如输入/输出完成,资源得到满足或错误处理完毕时,处于等待状态的进程并不马上转入执行状态,而是先转入就绪状态,然后再由系统进程调度程序在适当的时候将该进程转为执行状态; **执行—>就绪**:正在执行的进程,因时间片用完而被暂停执行,或在采用抢先式优先级调度算法的系统中,当有更高优先级的进程要运行而被迫让出处理机时,该进程便由执行状态转变为就绪状态。 线程之间的状态及转换 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpdXRhaXlpOA_size_16_color_FFFFFF_t_70 1] **创建状态**:Thread thread1 = new Thread(); 创建一个线程线程还没有开始运行 **就绪状态**:创建了线程之后,必须调用线程的Start方法。调用了start方法既是启动了线程,在线程实现当中会运行run方法,start方法返回后,线程处于就绪状态。在这个状态下一定会执行run放法,只有获得cpu时间才会真正地开始执行run方法。 **运行状态** :线程获得CPU时间以后,进入运行状态,真正开始执行run()方法。 **阻塞状态**:线程运行中会有各种原因导致阻塞,例如:使用了sleep方法进入睡眠状态,线程请求获得某个资源的锁,而此锁正在被其他线程持有,等待某个触发条件。阻塞是暂时让出cup资源,让其他的线程可以进入运行状态。 **终止状态**:run方法正常退出,异常未捕获使线程猝死。 为了确定线程在当前是否存活着(就是要么是可运行的,要么是被阻塞了),需要使用isAlive方法。如果是可运行或被阻塞,这个方法返回true; 如果线程仍旧是new状态且不是可运行的, 或者线程死亡了,则返回false. 下一篇:Java实现线程 [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpdXRhaXlpOA_size_16_color_FFFFFF_t_70]: https://img-blog.csdnimg.cn/20190822112902889.PNG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpdXRhaXlpOA==,size_16,color_FFFFFF,t_70 [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpdXRhaXlpOA_size_16_color_FFFFFF_t_70 1]: https://img-blog.csdnimg.cn/20190822142059733.PNG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpdXRhaXlpOA==,size_16,color_FFFFFF,t_70
相关 java 进程与线程 1,进程 对于操作系统来说,一个任务就是一个进程。例如:打开一个浏览器既是一个进程。 多进程 多余单核cpu来说,执行多任务是顺序执行的,那么怎么实现多进程呢... r囧r小猫/ 2024年04月17日 05:26/ 0 赞/ 86 阅读
相关 Java进程与线程 ![进程与线程之间的关系][2d04f23a8c53041bdd084f845d673a92.png] 文章目录 一、简介 野性酷女/ 2023年10月03日 19:58/ 0 赞/ 11 阅读
相关 Java - 进程与线程 进程与线程 概述:几乎任何的操作系统都支持运行多个任务,通常一个任务就是一个程序,而一个程序就是一个进程。当一个进程运行时,内部可能包括多个顺序执行流,每个顺序执行流就是 短命女/ 2022年05月30日 03:59/ 0 赞/ 264 阅读
相关 进程与线程 有那么一些零碎的小知识点,偶尔很迷惑,偶尔被忽略,偶然却发现它们很重要,也是各大笔试和面试高频出现考点。这段时间正好在温习这些,就整理在这里,一起学习一起提高!后面还会继续补充 痛定思痛。/ 2022年05月30日 00:19/ 0 赞/ 283 阅读
相关 进程与线程 [进程与线程][Link 1] 推荐一篇讲解的非常透彻且非常形象的文章,阮一峰的一篇博文。 原文链接:[进程与线程的一个简单解释][Link 2] posted @ 秒速五厘米/ 2022年03月22日 11:09/ 0 赞/ 281 阅读
相关 线程与进程 进程 1. 进程是资源分配的最小单位。 2. 开销: 有独立的代码和数据空间,程序切换开销大。 3. 坏境: 能同时运行多个进程(程序)。 4. 内存: 系统在运 骑猪看日落/ 2022年03月17日 10:14/ 0 赞/ 246 阅读
相关 进程与线程 进程,是一个活动的实体,我们平时所说的程序或者可执行文件并不是一个进程,他们都属于被动实体,只有将程序或者可执行文件调入到内存中才能成为一个活动实体,才能称之为进程。 进程是 小鱼儿/ 2022年01月16日 04:27/ 0 赞/ 292 阅读
相关 进程与线程 进程的定义 由于程序在并发执行时,各次执行的结果不同,所以用“程序”这个概念已无法描述程序的并发执行,所以必须引入新的概念 – 进程来描述程序的并发执行。 根据1978 比眉伴天荒/ 2022年01月15日 01:05/ 0 赞/ 303 阅读
相关 进程与线程 进程至少包含三个组成要素:程序快、代码块以及进程控制块; 进程是系统中资源分配和保护的基本单位; 线程作为CPU的调度和分派的基本单位; 每个进程在创建的时候,至少 Dear 丶/ 2022年01月11日 07:49/ 0 赞/ 325 阅读
相关 进程与线程 进程与线程 1 进程 1.1 进程的概念 进程就是正在运行的程序,它代表了程序所占用的内存区域 1.2 进程的特点 独立性 进程是系 忘是亡心i/ 2021年09月07日 06:19/ 0 赞/ 610 阅读
还没有评论,来说两句吧...