java 多线程 实现死锁问题
生活随笔
收集整理的這篇文章主要介紹了
java 多线程 实现死锁问题
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
/*** @author 楊寧*死鎖問題:*創(chuàng)建兩個線程或多個線程他們共享兩個或多個同一個對象(一個對象就是一把鎖)*兩個線程在執(zhí)行時各自占用對方的對象鎖,等待對方歸還各自的所需的鎖,從而進入一種僵持狀態(tài)*/
public class Sisuo {public static void main(String[] args) {One one = new One();Two two = new Two();Thread t1=new Thread(new A(one,two));Thread t2=new Thread(new B(one,two));t1.start();t2.start();}}
class A implements Runnable{One one;Two two;public A(One one, Two two) {super();this.one = one;this.two = two;}@Overridepublic void run() {//線程A占用鎖onesynchronized (one) {//為保證一定會出現(xiàn)死鎖讓其睡一秒鐘try {Thread.sleep(1000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println("A對象執(zhí)行one");//等待線程B將two鎖歸還synchronized (two) {System.out.println("A對象執(zhí)行two");}}}}
class B implements Runnable{One one;Two two;public B(One one, Two two) {super();this.one = one;this.two = two;}@Overridepublic void run() {//線程B占用鎖twosynchronized (two) {System.out.println("B對象執(zhí)行two");//等待線程A將one鎖歸還synchronized (one) {System.out.println("B對象執(zhí)行one");}}}}
class One{}
class Two{}
總結(jié)
以上是生活随笔為你收集整理的java 多线程 实现死锁问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。