【<线程锁死>】 布满荆棘的人生 2023-03-06 03:58 29阅读 0赞 ### 【<线程锁死>】 ### * * * * * \[1\] 什么是线程锁死 * \[2\] 线程锁死分为哪两种 * \[3\] 活锁 * \[3\] 线程饥饿 * \[5\] 线程活性故障总结 ##### \[1\] 什么是线程锁死 ##### 线程锁死是另一种常见的线程活性故障,与线程死锁不可以混为一谈。**线程锁死的定义如下:** **线程锁死是指等待线程由于唤醒其所需的条件永远无法成立,或者其他线程无法唤醒这个线程而一直处于非运行状态(线程并未终止)导致其任务 一直无法进展。** 线程死锁和线程锁死的外部表现是一致的,即故障线程一直处于非运行状态使得其所执行的任务没有进展。但是锁死的产生条件和线程死锁不一样,即使产生死锁的4个必要条件都没有发生,线程锁死仍然可能已经发生。 ##### \[2\] 线程锁死分为哪两种 ##### * **信号丢失锁死:** 信号丢失锁死是因为没有对应的通知线程来将等待线程唤醒,导致等待线程一直处于等待状态。 **典型例子**是等待线程在执行Object.wait( )/Condition.await( )前**没有对保护条件进行判断,而此时保护条件实际上可能已经成立**,此后可能并无其他线程更新相应保护条件涉及的共享变量使其成立并通知等待线程,这就使得等待线程一直处于等待状态,从而使其任务一直无法进展。 * **嵌套监视器锁死:** 嵌套监视器锁死是由于嵌套锁导致等待线程永远无法被唤醒的一种故障。 比如一个线程,只释放了内层锁Y.wait(),但是没有释放外层锁X; 但是通知线程必须先获得外层锁X,才可以通过 Y.notifyAll()来唤醒等待线程,这就导致出现了嵌套等待现象。 ##### \[3\] 活锁 ##### 活锁是一种特殊的线程活性故障。当一个线程一直处于运行状态,但是其所执行的任务却没有任何进展称为活锁。比如,一个线程一直在申请其所需要的资源,但是却无法申请成功。 ##### \[3\] 线程饥饿 ##### 线程饥饿是指线程一直无法获得其所需的资源导致任务一直无法运行的情况。线程调度模式有公平调度和非公平调度两种模式。**在线程的非公平调度模式下**,就可能出现线程饥饿的情况。 ##### \[5\] 线程活性故障总结 ##### * **线程饥饿发生时,如果线程处于可运行状态,也就是其一直在申请资源,那么就会转变为活锁** * 只要存在一个或多个线程因为获取不到其所需的资源而无法进展就是线程饥饿,所以**线程死锁其实也算是线程饥饿**
相关 线程死锁 - (void)viewDidLoad { [super viewDidLoad]; // dispatch_queu 电玩女神/ 2023年10月17日 06:27/ 0 赞/ 29 阅读
相关 Java线程死锁 /\ \ 【线程死锁】 \ 原因:两个线程相互等待被对方锁定的资源 \/ 代码模拟: public class DeadLock { 骑猪看日落/ 2022年09月26日 02:18/ 0 赞/ 276 阅读
相关 线程死锁 线程死锁是多线程中最头疼的问题,一旦进入线程死锁,很多时候只能通过外部进程重启才能解决问题 线程到达死锁的四个条件: 互斥条件:一个资源每次只能被一个线程使用 资源独占条 港控/mmm°/ 2022年08月21日 14:43/ 0 赞/ 231 阅读
相关 线程死锁 一、死锁概念 线程死锁是指由于两个或者多个线程互相持有对方所需要的资源,导致这些线程处于等待状态,无法前往执行。当线程进入对象的synchronized代码块时,便 一时失言乱红尘/ 2022年06月14日 09:12/ 0 赞/ 286 阅读
相关 线程死锁 简述: 星期一,新的的一周开始,天气晴朗,风和日丽。本是一个非常不错的心情,突然微信头像闪烁,果不其然又爬虫出问题了,可谓是一入爬虫深似海,项目稳定才见鬼。 墨蓝/ 2022年06月08日 06:30/ 0 赞/ 287 阅读
相关 Java——线程死锁 //要避免死锁 //死锁的例子 /class Ticket implements Runnable{ private int 我就是我/ 2022年06月07日 03:51/ 0 赞/ 290 阅读
相关 线程死锁 虽然同步锁机制解决了线程安全问题,但是也带来一些弊端: 1. 效率会降低,每次都需要判断锁的状态 2. 可能引发死锁(彼此占用所需要的资源),出现的概率非常小, 叁歲伎倆/ 2022年05月08日 02:38/ 0 赞/ 273 阅读
相关 线程死锁 先简单用生活列子介绍死锁, 2个人一起吃饭但是只有一双筷子,2人轮流吃(同时拥有2只筷子才能吃)。某一个时候,一个拿了左筷子,一人拿了右筷子,2个人都 ╰半夏微凉°/ 2022年04月08日 13:00/ 0 赞/ 306 阅读
相关 线程死锁 ![20190811092629898.png][] package com.vince; / 多线程要进行资源的共享,就需要同步,但同步过多,就 ゞ 浴缸里的玫瑰/ 2021年10月18日 09:36/ 0 赞/ 465 阅读
还没有评论,来说两句吧...