linux怎么用jconsole_linux中jconsole
如何检测Java中的死锁?
虽然这可以有很多答案,但我的版本是首先我会看看代码,如果我看到一个嵌套的同步块,或从一个同步的方法调用其他同步方法,或试图在不同的对象上获取锁,如果开发人员不是非常小心,就很容易造成死锁。
另一种方法是在运行应用程序时实际锁定时找到它,尝试采取线程转储,在Linux中,你可以通过kill-3命令执行此操作,这将打印应用程序日志文件中所有线程的状态,并且你可以看到哪个线程被锁定在哪个线程对象上。
你可以使用fastthread.io网站等工具分析该线程转储,这些工具允许你上载线程转储并对其进行分析。
另一种方法是使用jConsole或VisualVM,它将显示哪些线程被锁定以及哪些对象被锁定。
如果你有兴趣了解故障排除工具和分析线程转储的过程,我建议你看看UriahLevy在多元视觉(PluraIsight)上《分析Java线程转储》课程。旨在详细了解Java线程转储,并熟悉其他流行的高级故障排除工具。
编写一个将导致死锁的Java程序?
一旦你回答了前面的问题,他们可能会要求你编写代码,这将导致Java死锁。
这是我的版本之一
如果method1()和method2()都由两个或多个线程调用,则存在死锁的可能性,因为如果线程1在执行method1()时在Sting对象上获取锁,线程2在执行method2()时在Integer对象上获取锁,等待彼此释放Integer和String上的锁以继续进行一步,但这永远不会发生。
此图精确演示了我们的程序,其中一个线程在一个对象上持有锁,并等待其他线程持有的其他对象锁。
你可以看到,Thread1需要Thread2持有的Object2上的锁,而Thread2希望获得Thread1持有的Object1上的锁。由于没有线程愿意放弃,因此存在死锁,Java程序被卡住。
其理念是,你应该知道使用常见并发模式的正确方法,如果你不熟悉这些模式,那么JosePaumard《应用于并发和多线程的常见Java模式》是学习的好起点。
linux怎么用jconsole_linux中jconsole相关推荐
- php文件内含有隐藏的^m字符,【整理】如何取消Linux下,vi中显示的^M符号
[整理]如何取消Linux下,vi中显示的^M符号 [背景知识] ^M 是ascii中的'\r', 回车符,是16进制的0x0D,8进制的015,十进制的13. 对于换行这个动作,unix下一般只有一 ...
- linux平台下QtCreator中集成Valgrind系列工具
linux平台下QtCreator中集成Valgrind系列工具 ###1.valgrind 安装 valgrind 安装 2.打开QtCreator >> Analyze 你就会发现 这 ...
- Apache源码包在LINUX(CENTOS6.8)中的安装(出现问题及解决)
任务:在CENT6.8系统中安装Apache(版本为:httpd-2.4.41) 前提:由于源码包必须先编译后安装,所以必须先安装编译器:gcc 理论步骤: 1.检测gcc软件包,如果不存在则进行安装 ...
- Linux服务器生产环境中的文件删除与替换
在Linux运维中经常遇到要替换Linux服务器系统程序或者业务应用程序文件的情况,很多人都会担心,直接替换会不会导致Linux系统程序崩溃或者应用程序崩溃,而需要关闭服务才敢替换,今天在freebu ...
- 详解Linux交互式shell脚本中创建对话框实例教程
详解Linux交互式shell脚本中创建对话框实例教程 本教程我们通过实现来讲讲Linux交互式shell脚本中创建各种各样对话框,对话框在Linux中可以友好的提示操作者,感兴趣的朋友可以参考学习一 ...
- linux文件删除指定内容,Linux bash删除文件中含“指定内容”的行功能示例
本文实例讲述了Linux bash删除文件中含"指定内容"的行功能.分享给大家供大家参考,具体如下: #!/bin/sh # 功能: 删除文件中含"指定内容"的 ...
- linux命令---查找文件中的内容
linux命令---查找文件中的内容 [yang@localhost ~]$ cat 1.txt |egrep '123456789|second'-------匹配123456789或者second ...
- Linux下高性能网络编程中的几个TCP/IP选项
Linux下高性能网络编程中的几个TCP/IP选项 转自:http://blog.chinaunix.net/u/12592/showart.php?id=2064847 最近在新的平台上测试程序,以 ...
- Linux内核源码中使用宏定义的若干技巧
在C中,宏定义的概念虽然简单,但是真要用好却并不那么容易,下面从Linux源码中抽取一些宏定义的使用方法,希望能从中得到点启发: 1. 类型检查 比如module_init的宏定义: 点击(此处)折叠 ...
- linux在文档中查找内容,【Linux】用grep在文档中查找内容
有时候,我们需要在文档中查找一些内容,常用grep.它在文档查找相关内容并输出匹配行. > 查找某关键字 在system.log中,查找包含keyword的行 grep 'keyword' sy ...
最新文章
- docsify-edit-on-github
- 经典C语言程序100例之二五
- dfs记忆化搜索(带限制的选择问题) 讲解:LeetCode打家劫舍||| / 蓝桥 地宫取宝/蓝桥 k进制数//剪格子//方格分割
- WordPress中文SEO优化建议
- 三级数据库考mysql_计算机三级MySQL数据库试题及答案
- windows批量ping脚本
- 网络攻防技术——环境变量与set-uid实验
- 韩立刚计算机网络笔记-第04章 数据链路层
- matlab 如何读取二进制、十六进制txt文档
- 京东实习笔试——站队
- [ESP8266学习笔记]components_nvs 非易失性存储 Non-Volatile Storage(NVS),保存数据到flash
- Android 多语言国家代码清单及values命名
- java实现hbase表创建、数据插入、删除表
- 深度学习笔记--基于Pytorch搭建VGG16网络
- js实现左右来回运动效果实例
- HDU 6333 Problem B. Harvest of Apples(莫队离线)
- 话题情感混合模型(JST)
- L1-040 最 佳情侣身高差
- 香港电台知名主持人梁继璋写给儿子的一封信
- 微信小程序 云开发 订阅消息 获取下发权限失败 errCode: 20001