死锁的讲解

布满荆棘的人生 2023-10-07 12:28 27阅读 0赞

下面是锁套锁,造成的死锁
检测死锁的方法!
运行测试!!!然后cmd jconsole命令 检测死锁!就能看见了!
左下角可以看出 死锁的线程
在这里插入图片描述

  1. package com.laoluo.demo4;
  2. /**
  3. *
  4. *
  5. * 1死锁
  6. * @author 戴尔
  7. *
  8. */
  9. public class DeadSample {
  10. //下面是锁套锁非常容易出现死锁 每个锁都想要自己的资源!
  11. private static String filleA="A文件";
  12. private static String filleB="B文件";
  13. public static void main(String[] args) {
  14. new Thread(){
  15. @Override
  16. public void run() {
  17. while(true) {
  18. synchronized (filleA) {
  19. System.out.println(this.getName()+"保存了A文件");
  20. synchronized (filleB) {
  21. System.out.println(this.getName()+"保存了B文件");
  22. }
  23. }
  24. System.out.println("保存了所有文件!");
  25. }
  26. }
  27. }.start();
  28. new Thread() {
  29. public void run() {
  30. while(true) {
  31. synchronized (filleA) {
  32. System.out.println(this.getName()+"保存了A文件");
  33. synchronized (filleB) {
  34. System.out.println(this.getName()+"保存了B文件");
  35. }
  36. }
  37. System.out.println("保存了所有文件!");
  38. }
  39. }
  40. }.start();
  41. }
  42. }

死锁! 堆内存一直上涨!!!因为它一直侵入你的内存

  1. Thread-0保存了A文件
  2. Thread-0保存了B文件
  3. 保存了所有文件!
  4. Thread-0保存了A文件
  5. Thread-0保存了B文件
  6. 保存了所有文件!

发表评论

表情:
评论列表 (有 0 条评论,27人围观)

还没有评论,来说两句吧...

相关阅读