iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >java中引发死锁的情况有哪些
  • 619
分享到

java中引发死锁的情况有哪些

2024-04-02 19:04:59 619人浏览 独家记忆
摘要

java中引发死锁的情况有4种,分别是:1、交叉锁引发程序死锁;2、内存不足引发程序死锁;3、一问一答式的数据交换引发死锁;4、死循环引发的死锁。具体内容如下:java引发死锁的4种情况交叉锁引发程序死锁:比如线程A持有R1的锁等待R2的锁

java中引发死的情况有4种,分别是:1、交叉锁引发程序死锁;2、内存不足引发程序死锁;3、一问一答式的数据交换引发死锁;4、死循环引发的死锁。

java中引发死锁的情况有哪些

具体内容如下:

java引发死锁的4种情况

交叉锁引发程序死锁:比如线程A持有R1的锁等待R2的锁,线程B持有R2的锁等待R1的锁。

内存不足:比如两个线程T1和T2,T1已获取10MB内存,T2获取了15MB内存,T1和T2都需要获取30MB内存才能工作,但是剩余可用的内存为10MB,这样两个线程都在等待彼此释放内存资源。

一问一答式的数据交换:服务器开启某个端口,等待客户端访问,客户端发送请求后,服务器因某些原因错过了客户端请求,导致客户端等待服务器回应,而服务器等待客户端发送请求。

死循环引起的死锁:比较常见,使用jstack等工具看不到死锁,但是程序不工作,CPU占有率高,这种死锁也叫系统假死,难以排查和重现。

死锁相关实例

public class Main {

    private final Object MUTEX_READ = new Object();

    private final Object MUTEX_WRITE = new Object();

 

    public void read(){

        synchronized (MUTEX_READ){

            synchronized (MUTEX_WRITE){

            }

        }

    }

 

    public void write(){

        synchronized (MUTEX_WRITE){

            synchronized (MUTEX_READ){

            }

        }

    }

 

    public static void main(String[] args) throws InterruptedException {

        Main m = new Main();

        new Thread(()->{

            while (true){

                m.read();

            }

        }).start();

        new Thread(()->{

            while (true){

                m.write();

            }

        }).start();

    }

}

--结束END--

本文标题: java中引发死锁的情况有哪些

本文链接: https://www.lsjlt.com/news/110498.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • java中引发死锁的情况有哪些
    java中引发死锁的情况有4种,分别是:1、交叉锁引发程序死锁;2、内存不足引发程序死锁;3、一问一答式的数据交换引发死锁;4、死循环引发的死锁。具体内容如下:java引发死锁的4种情况交叉锁引发程序死锁:比如线程A持有R1的锁等待R2的锁...
    99+
    2024-04-02
  • java引发死锁的四种情况分别是什么
    这篇文章主要介绍java引发死锁的四种情况分别是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、四种情况(1)交叉锁导致程序死锁:比如线程A持有R1的锁等待R2的锁,线程B持有R2的锁等待R1的锁(2)内存不足...
    99+
    2023-06-15
  • mysql引发索引失效的情况有哪些
    这篇文章主要讲解了“mysql引发索引失效的情况有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql引发索引失效的情况有哪些”吧!1、在查询条件中计算索引列的使用函数或操作。若已建...
    99+
    2023-06-20
  • JavaScript中引发内存泄漏的情况有哪些
    JavaScript中引发内存泄漏的情况有哪些?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。JavaScript的特点1.JavaScript主要用来向HTML页面添加交互...
    99+
    2023-06-14
  • mysql锁失效的情况有哪些
    MySQL锁失效的情况主要有以下几种: 死锁:当多个事务互相等待对方持有的锁资源时,可能会产生死锁。MySQL会自动检测到死锁,...
    99+
    2023-10-24
    mysql
  • ​​​​​​​Golang实现RabbitMQ中死信队列的情况有哪些
    这篇文章主要讲解了“Golang实现RabbitMQ中死信队列的情况有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Golang实现RabbitMQ中死信队列的情况有哪些”吧!1、造成死...
    99+
    2023-07-05
  • SqlServer索引失效的情况有哪些
    表数据量过小或者分布不均匀,导致SQL Server查询优化器认为使用索引扫描的代价大于全表扫描,从而选择全表扫描而不是使用索引...
    99+
    2024-04-16
    SqlServer
  • innodb索引失效的情况有哪些
    数据量过大:当数据表中的数据量非常大时,索引可能会失效,因为MySQL可能会选择不使用索引而进行全表扫描,这样会导致查询性能下降...
    99+
    2024-03-14
    innodb
  • MySQL索引失效的情况有哪些
    这篇文章主要讲解了“MySQL索引失效的情况有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL索引失效的情况有哪些”吧!1.最左前缀原则在MySQL数据库中,联合索引遵守最左前缀...
    99+
    2023-07-05
  • mysql不走索引的情况有哪些
    以下是一些可能导致MySQL不走索引的情况:1. 数据量太小:当数据量太小时,MySQL可能会选择全表扫描而不是使用索引。这是因为索...
    99+
    2023-09-20
    mysql
  • SQL索引失效的情况有哪些
    这篇文章主要介绍了SQL索引失效的情况有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SQL索引失效的情况有哪些文章都会有所收获,下面我们一起来看看吧。数据库调优的大致方向:索引失效,没有充分利用到索引&a...
    99+
    2023-07-05
  • mysql中出现索引失效的情况有哪些
    本篇文章给大家分享的是有关mysql中出现索引失效的情况有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。最佳左前缀原则——如果索引了多列,要遵守最左前缀原则。指的是查询要从...
    99+
    2023-06-15
  • oracle索引不生效的情况有哪些
    有以下几种情况会导致Oracle索引不生效:1. 索引选择错误:如果创建的索引不适合查询语句的使用模式,那么索引就不会被使用。例如,...
    99+
    2023-09-29
    oracle
  • Java中死锁产生的原因有哪些?
    目录死锁产生原因解决死锁总结前言: 死锁(Dead Lock)指的是两个或两个以上的运算单元(进程、线程或协程),都在等待对方释放资源,但没有一方提起释放资源,从而造成了一种阻塞的现...
    99+
    2024-04-02
  • Nagios触发警报的情况有哪些
    服务或主机状态变为“故障”或“未知” 服务或主机恢复正常状态 服务或主机状态改变(比如从“警告”到“故障”) 阈值超过或低于设定的...
    99+
    2024-04-02
  • MySQL导致索引失效的情况有哪些
    本篇内容主要讲解“MySQL导致索引失效的情况有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL导致索引失效的情况有哪些”吧!一、准备工作首先准备两张表用于演示:CREATE&nbs...
    99+
    2023-07-02
  • c++函数返回引用的情况有哪些
    C++函数返回引用的情况有以下几种: 返回左值引用:函数可以返回已存在的变量、类成员或者数组的引用。例如: int& getVar...
    99+
    2023-10-23
    c++
  • oracle联合索引失效的情况有哪些
    以下是一些导致Oracle联合索引失效的情况: 数据分布不均匀:如果联合索引的列中的值分布不均匀,查询可能会导致索引失效。例如,...
    99+
    2023-10-25
    oracle
  • mysql组合索引失效的情况有哪些
    MySQL组合索引失效的情况有以下几种:1. 索引列的顺序不符合查询条件:组合索引的顺序非常重要,如果查询条件中的列不按照组合索引的顺序进行查询,那么组合索引将失效。2. 索引列被使用了函数或表达式:如果查询条件中的索引列被使用了函数或...
    99+
    2023-08-09
    mysql
  • java内存溢出的情况有哪些
    Java内存溢出指的是程序在运行过程中申请的内存超过了Java虚拟机(JVM)所能提供的最大内存限制,导致程序无法正常运行。以下是几...
    99+
    2023-10-27
    java
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作