Java一个简单的死锁程序

企鹅博客
19267
文章
0
评论
2019年7月14日07:51:22 评论 2K views 1692字阅读5分38秒
  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.     {  
  11.          while(true) {  
  12.                 if(flag)  
  13.                 {  
  14.                     synchronized(Lock.locka)  
  15.                     {  
  16.                         System.out.println("if loca");  
  17.                         synchronized(Lock.lockb)  
  18.                         {  
  19.                             System.out.println("if lockb");  
  20.                         }  
  21.                     }  
  22.                 }  
  23.                       
  24.                 else {  
  25.                     synchronized(Lock.lockb)  
  26.                     {  
  27.                         System.out.println("else lockb");  
  28.                         synchronized (Lock.locka) {  
  29.                             System.out.println("else locka");  
  30.                         }  
  31.                     }  
  32.                 }  
  33.             }  
  34.     }  
  35. }  
  36. class Lock  
  37. {  
  38.     static Object locka=new Object();  
  39.     static Object lockb=new Object();  
  40. }  
  41. public class DeadLock {  
  42.   
  43.     public static void main(String args[])  
  44.     {  
  45.         Thread t1=new Thread(new Dead(true));  
  46.         Thread t2=new Thread(new Dead(false));  
  47.         t1.start();  
  48.         t2.start();  
  49.     }  
  50. }  
  51. /* 
  52.  *                          写一个死锁程序 
  53.  *              容易引起 是因为两个锁引用的不是同一个锁,这样就会引起死锁现在 
  54.  * 
  55.  *              还有在多现在中出现安全性问题的时候,一般要考虑的问题: 
  56.  *              1.   是不是两个线程,并且两个线程有没有同步,也就是有没有 synchronized 块或函数 
  57.  *              2.   如果有多个同步代码块或同步函数的话,那看看所有 的同步它们用的是不是同一个锁,如���不是,会引起死锁和安全性问题 
  58.  * 
  59.  * */                                           2011/10/23  15:13:46  
继续阅读
  • 版权声明: 发表于 2019年7月14日07:51:22
  • 转载注明:https://www.qieseo.com/172262.html
在UNIX系统中实现堆栈跟踪 Linux编程

在UNIX系统中实现堆栈跟踪

在程序运行的过程中,如果出现异常,通常会发出一个信号进入信号处理函数中处理。有些故障过于严重到无法实现程序的自恢复。这个时候,程序只能无奈的输出一些错误信息。当然这些错误信息对程序的调试也是非常有帮助...
Linux下C语言url请求 Linux编程

Linux下C语言url请求

任何代码只有你写过,才能深刻理解,有的时候看文档看的很茫然的时候,尽量找点别人的源码,在别人源码上更改,在调试,可能会达到事半功倍的效果。 近来项目需要Linux中访问一个url接口传参数及...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: