歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Java一個簡單的死鎖程序

Java一個簡單的死鎖程序

日期:2017/3/1 11:09:31   编辑:Linux編程
  1. package namespace;
  2. class Dead implements Runnable
  3. {
  4. public boolean flag;
  5. public Object locka=new Object();
  6. public Object lockb=new Object();
  7. public Dead(boolean f) {this.flag=f;}
  8. public void run()
  9. {
  10. while(true) {
  11. if(flag)
  12. {
  13. synchronized(Lock.locka)
  14. {
  15. System.out.println("if loca");
  16. synchronized(Lock.lockb)
  17. {
  18. System.out.println("if lockb");
  19. }
  20. }
  21. }
  22. else {
  23. synchronized(Lock.lockb)
  24. {
  25. System.out.println("else lockb");
  26. synchronized (Lock.locka) {
  27. System.out.println("else locka");
  28. }
  29. }
  30. }
  31. }
  32. }
  33. }
  34. class Lock
  35. {
  36. static Object locka=new Object();
  37. static Object lockb=new Object();
  38. }
  39. public class DeadLock {
  40. public static void main(String args[])
  41. {
  42. Thread t1=new Thread(new Dead(true));
  43. Thread t2=new Thread(new Dead(false));
  44. t1.start();
  45. t2.start();
  46. }
  47. }
  48. /*
  49. * 寫一個死鎖程序
  50. * 容易引起 是因為兩個鎖引用的不是同一個鎖,這樣就會引起死鎖現在
  51. *
  52. * 還有在多現在中出現安全性問題的時候,一般要考慮的問題:
  53. * 1. 是不是兩個線程,並且兩個線程有沒有同步,也就是有沒有 synchronized 塊或函數
  54. * 2. 如果有多個同步代碼塊或同步函數的話,那看看所有 的同步它們用的是不是��一個鎖,如果不是,會引起死鎖和安全性問題
  55. *
  56. * */ 2011/10/23 15:13:46
Copyright © Linux教程網 All Rights Reserved