【JAVA之多线程】5.死锁

来源:互联网 发布:spss19软件安装 编辑:程序博客网 时间:2024/06/07 08:58

死锁:同步中嵌套同步,锁却不同。

俩人一个拿一根筷子,都想要对方的筷子,两人又都不想给对方,就一人拿一根死磕。

public class Text {    public static void main(String[] args){        Thread t1 = new Thread(new Demo(true));        Thread t2 = new Thread(new Demo(false));        t1.start();        t2.start();    }}class Demo implements Runnable {    boolean flag;    Demo(boolean flag) {        this.flag = flag;    }    public void run(){        if (flag) {                 synchronized(C.t) {                System.out.println("if t");                synchronized(C.o) {                    System.out.println("if o");                }            }        }        else            synchronized(C.o) {                System.out.println("else o");                synchronized(C.t) {                    System.out.println("else t");                }            }    }}class C {    static Object t = new Object();    static Object o = new Object();}//运行结果:if telse o//可能会出现和谐状态,我给你用一下我的筷子,你吃一口再给我,我吃一口。//这样运行结果四个语句均可以输出。
0 0
原创粉丝点击