示例

  1. package com.thinking.in.java.course.chapter21.deadLock2;
  2. public class Aoo {
  3. private Voo voo;
  4. public Aoo(Voo voo){
  5. this.voo = voo;
  6. }
  7. public synchronized void a1(){
  8. System.out.println("a1------");
  9. voo.v1();
  10. }
  11. public synchronized void a2(){
  12. System.out.println("a2------");
  13. }
  14. }
  15. //--------------------------------------------
  16. package com.thinking.in.java.course.chapter21.deadLock2;
  17. public class Voo {
  18. private Aoo aoo;
  19. public void setAoo(Aoo aoo) {
  20. this.aoo = aoo;
  21. }
  22. public synchronized void v1(){
  23. System.out.println("v1======");
  24. }
  25. public synchronized void v2(){
  26. System.out.println("v2======");
  27. aoo.a2();
  28. }
  29. }
  30. //--------------------------------------
  31. public class DeadLock2 {
  32. public static void main(String[] args) {
  33. final Voo voo = new Voo();
  34. final Aoo aoo = new Aoo(voo);
  35. voo.setAoo(aoo);
  36. new Thread(()->{
  37. while (true){
  38. voo.v2();
  39. }
  40. }).start();
  41. new Thread(()->{
  42. while (true){
  43. aoo.a1();
  44. }
  45. }).start();
  46. }
  47. }

21.6 死锁 - 图1