Java线程死锁的问题解决办法

  

<强>,Java线程死锁的问题解决办法

  

<强>【线程死锁】,
  

  

原因:两个线程相互等待被对方锁定的资源
  

  

代码模拟:

        公开课僵局{   公共静态void main (String [] args) {   对象obj=新对象();   其中obj1=新对象();   DeadLockThread1 D1=new DeadLockThread1 (obj,其中obj1);   DeadLockThread2 D2=new DeadLockThread2 (obj,其中obj1);   新线程(D1,“线程1”).start ();   新线程(D2,“线程2”).start ();   }   }      类DeadLockThread1实现Runnable {   私有对象obj;   私有对象其中obj1;      公共DeadLockThread1(其中obj1对象obj,对象){   这一点。obj=obj;   这一点。其中obj1=其中obj1;   }      @Override   公共空间run () {   同步(obj) {//DeadLockThread1锁定obj对象   尝试{   thread . sleep (1000);   同步(其中obj1){//等待锁定其中obj1对象,obj对象已被DeadLockThread2锁定   obj1.getClass ();   }   }捕捉(InterruptedException e) {   e.printStackTrace ();   }   }   }   }      类DeadLockThread2实现Runnable {   私有对象obj;   私有对象其中obj1;      公共DeadLockThread2(其中obj1对象obj,对象){   这一点。obj=obj;   这一点。其中obj1=其中obj1;   }      @Override   公共空间run () {   同步(其中obj1) {//DeadLockThread2锁定methoda对象   尝试{   thread . sleep (1000);   同步(obj){//等待锁定obj对象,obj对象已被DeadLockThread1锁定   obj.getClass ();   }   }捕捉(InterruptedException e) {   e.printStackTrace ();   }   }   }   }      之前      

查看方式:
  

  

1,【cmd】下输入【jconsole】
  

  

癑ava线程死锁的问题解决办法"

  

2,选择测试线程并点击右下角【连接,左上角选择【线程】,左下角选择【检测死锁】
  

  

癑ava线程死锁的问题解决办法"

  

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望通过本文能帮助到大家,谢谢大家对本站的支持!

Java线程死锁的问题解决办法