• 技术文章 >java >java基础

    java线程锁死是什么

    小妮浅浅小妮浅浅2021-05-11 15:58:14原创4458

    1、说明

    线程锁死是指等待线程由于唤醒其所需的条件永远无法成立,或者其他线程无法唤醒这个线程而一直处于非运行状态(线程并未终止)导致其任务 一直无法进展。

    2、线程锁死分为两种:

    (1)信号丢失锁死:信号丢失锁死是因为没有对应的通知线程来将等待线程唤醒,导致等待线程一直处于等待状态。

    典型例子是等待线程在执行Object.wait( )/Condition.await( )前没有对保护条件进行判断,而此时保护条件实际上可能已经成立,此后可能并无其他线程更新相应保护条件涉及的共享变量使其成立并通知等待线程,这就使得等待线程一直处于等待状态,从而使其任务一直无法进展。

    (2)嵌套监视器锁死:嵌套监视器锁死是由于嵌套锁导致等待线程永远无法被唤醒的一种故障。

    比如一个线程,只释放了内层锁Y.wait(),但是没有释放外层锁X; 但是通知线程必须先获得外层锁X,才可以通过 Y.notifyAll()来唤醒等待线程,这就导致出现了嵌套等待现象。

    以上就是java线程锁死的介绍,希望对大家有所帮助。更多Java学习指路:Java基础

    专题推荐:java线程
    上一篇:java多线程的作用 下一篇:java中RMI的原理分析

    相关文章推荐

    • java线程池创建方式• java线程池异常的处理方法• java线程池的工作队列有哪几个• Java线程调度的方式是什么?• Java线程状态有哪几种• java线程和进程的区分• java线程优先级是什么• java线程池死锁的产生及处理• java线程池有哪些拒绝策略

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网