public class TestDeadLock implements Runnable {
    public static int flag =1;
    public static Object o1;
    public static Object o2;
    @Override
    public void run() {
        // TODO Auto-generated method stub
        System.out.println("flag = "+flag);
        if(flag == 1){
            synchronized(o1){
                try {
                    Thread.sleep(5000);
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            synchronized (o2) {
                System.out.println("1");
            }
        }
        if(flag == 0){
            synchronized (o2) {
                try {
                    Thread.sleep(5000);
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                synchronized (o1) {
                    System.out.println("0");
                }
            }
        }
    }
    public static void main(String[] args) {
        TestDeadLock td1 = new TestDeadLock();
        TestDeadLock td2 = new TestDeadLock();
        td1.flag = 1;
        td2.flag = 0;
        Thread t1 = new Thread(td1);
        Thread t2 = new Thread(td2);
        t1.start();
        t2.start();
    }
}flag = 0Exception in thread "Thread-0" Exception in thread "Thread-1" 
flag = 0
java.lang.NullPointerException
    at Thread.TestDeadLock.run(TestDeadLock.java:26)
    at java.lang.Thread.run(Unknown Source)
java.lang.NullPointerException
    at Thread.TestDeadLock.run(TestDeadLock.java:26)
    at java.lang.Thread.run(Unknown Source)
上面是运行结果,编译没有问题,求解释。
 superkrissV
superkrissV 
					蓝胖子Torres
 随时随地看视频慕课网APP
随时随地看视频慕课网APP
相关分类