首页  >  文章  >  Java  >  什么是Java线程死锁?

什么是Java线程死锁?

王林
王林转载
2023-04-27 13:52:071149浏览

1、说明

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

2、线程锁死分为两种:

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

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

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

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

java基本数据类型有哪些

Java的基本数据类型分为:

1、整数类型,用来表示整数的数据类型。

2、浮点类型,用来表示小数的数据类型。

3、字符类型,字符类型的关键字是“char”。

4、布尔类型,是表示逻辑值的基本数据类型。

以上是什么是Java线程死锁?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文转载于:yisu.com。如有侵权,请联系admin@php.cn删除