| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> 进程和线程、java中的线程、死锁 -> 正文阅读 |
|
[Java知识库]进程和线程、java中的线程、死锁 |
线程、进程基本概念: ? ? ? ? 线程是进程的子任务,是cpu调度和分配的基本单位,用于保证程序的实时性,实现进程内部的并发,线程是操作系统可识别的最小执行的调度单位。 两者的区别: 2、进程在执行的过程中拥有独立的内存单元,而多个线程共享进程的内存。 3、进程是资源分配的最小单位,线程是cpu调度的最小单位。 4、系统开销: 由于在创建或撤消进程时,系统都要为之分配或回收资源,如内存空间、I/o设备等。因此,操作系统所付出的开销将显著地大于在创建或撤消线程时的开销。类似地,在进行进程切换时,涉及到整个当前进程CPU环境的保存以及新被调度运行的进程的CPU环境的设置。而线程切换只须保存和设置少量寄存器的内容,并不涉及存储器管理方面的操作。可见,进程切换的开销也远大于线程切换的开销。 进程的五种状态 ?创建状态:进程在创建时需要申请一个空白的PCB,向其中填写控制和管理进程的信息,完成资源分配。如果创建工作无法完成,比如资源无法满足,就无法被调度运行,把此时进程所处状态称为创建状态 就绪状态:进程已经准备好,已分配到所需资源,只要分配到就能CPU够立即运行 执行状态:进程处于就绪状态被调度后,进程进入执行状态 阻塞状态:正在执行的进程由于某些事件(I/O请求,申请缓存区失败)而暂时无法运行,进程受到阻塞。在满足请求时进入就绪状态等待系统调用 终止状态:进程结束,或出现错误,或被系统终止,进入终止状态。无法再执行 java中的线程五种状态 状态图如下所示: ? ?1、new 新创建一个线程的对象 ?2、可运行:线程创建对象之后,其他的线程调用该对象的start方法,该线程的状态可能在线程池中,等待线程池调度选中,获取CPU中的使用权 ?3、运行:获得CPU的使用权限后,执行程序中的代码 ?4、阻塞:阻塞状态是线程因为某种原因放弃了使用CPU的权限,阻塞的三种情形 ? ? ? ?(a). 等待阻塞:运行(running)的线程执行o.wait()方法,JVM会把该线程放入等待队列(waitting queue)中。 ?????????d)线程试图取得一个同步监视器,该同步监视器被其他的线程所占用的 ? ? ? ? 等到线程再次的进行调度的时候,其几种的状态如下 ? ? ? ? ? ? ? ? a)线程的sleep时间到啦 ? ? ? ? ? ? ? ? b)线程获得了同步监视器 ? ? ? ? ? ? ? ? c)线程等到了notify的通知 ? ? ? ? ? ? ? ? d)线程的wait的时间结束 ? ? ? ? ? ? ? ? e)线程的加塞过程结束 ? ? ? ? ? ? ? ? f)线程被恢复啦 5、线程死亡:线程run()、main()方法执行结束。 死锁 ????????指多个进程在运行过程中因争夺资源而造成的一种僵局,当进程处于这种僵持状态时,若无外力作用,它们都将无法再向前推进。 竞争资源 ????????系统中的资源可以分为两类: 其二就是进程之间的顺序非法 产生死锁的4个必要条件 ? ? ? ? 1、互斥条件:进程要求分配的资源进行排他的控制,在一段时间内的资源仅为线程所占用的 ? ? ? ? 2、请求和保持条件:当进程的请求资源进行阻塞的,已经获得的资源保持不放 ? ? ? ? 3、不可剥夺,进行已经获得资源在未使用之前, 不可剥夺,只能够在使用完成之后进行自己释放 ? ? ? ? 4、环路等待:进程-资源环形等待的情况的 要解决死锁的就要从这4个条件进行解决 ????????资源一次性分配:一次性分配所有资源,这样就不会再有请求了:(破坏请求条件) ???????? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 10:30:18- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |