<强>,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】
2,选择测试线程并点击右下角【连接,左上角选择【线程】,左下角选择【检测死锁】
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望通过本文能帮助到大家,谢谢大家对本站的支持!
Java线程死锁的问题解决办法