多线程
死锁产生的条件是什么?
❒ 死锁: 一个线程需要同时获取多把锁,这时就容易发生死锁 线程1:synchronized A,然后 synchronized B 线程2:synchronized B,然后 synchronized A 此时线程1,和线程2互为等待。 ❒ 如何进行死锁诊断? ✔ 当程序出现了死锁现象,我们可以使用jdk自带的工具:jps和jstack ✔ jps:输出JVM中运行的进程状态信息 ✔ jstack:查看java进程内线程的堆栈信息(jstack -l 进程id) ❒ 其他解决工具,可视化工具 ▣ jconsole ✔ 用于对jvm的内存,线程,类的监控,是一个基于jmx的GUI性能监控工具打开方式:java 安装目录 bin目录下 直接启动jconsole.exe 就行 ▣ VisualVM:故障处理工具 ✔ 能够监控线程,内存情况,查看方法的CPU时间和内存中的对象,已被GC的对象,反向查看分配的堆栈打开方式:java 安装目录 bin目录下 直接启动 jvisualvm.exe就行
❒ 死锁产生的条件是什么? ✔ 一个线程需要同时获取多把锁,这时就容易发生死锁 ❒ 如何进行死锁诊断? ✔ 当程序出现了死锁现象,我们可以使用jdk自带的工具:jps和jstackjps:输出JVM中运行的进程状态信息 ✔jstack:查看java进程内线程的堆栈信息,查看日志,检查是否有死锁如果有死锁现象,需要查看具体代码分析后,可修复可视化工具jconsole、VisualVM也可以检查死锁问题