码迷,mamicode.com
首页 > 编程语言 > 详细

java多线程中的死锁

时间:2016-05-02 18:39:27      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:

产生死锁的原因:多个线程用到了多个锁,多个锁之间存在交叉关系,就有可能产生死锁。

下面是简单的死锁,下面代码中的死锁不是一定会产生。

package demo_1;

public class TestDeadLock {

    public static void main(String[] args) {
        
        Thread1 thread1 = new Thread1();
        Thread2 thread2 = new Thread2();
        
        Thread t1 = new Thread(thread1);
        Thread t2 = new Thread(thread2);
        
        t1.start();
        System.out.println(234);
        t2.start();

    }

}

class MyLock{
    static Object obj1 = new Object();
    static Object obj2 = new Object();
}

class Thread1 implements Runnable{

    @Override
    public void run() {
        synchronized (MyLock.obj1) {
            System.out.println("lock obj1");
/*            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }*/
            synchronized (MyLock.obj2) {
                System.out.println("say1..obj2");
            }
        }
        
    }
    
}
class Thread2 implements Runnable{

    @Override
    public void run() {
        synchronized (MyLock.obj2) {
            System.out.println("lock obj2");
/*            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }*/
            synchronized (MyLock.obj1) {
                System.out.println("say..obj1");
            }
        }
        
    }
    
}

 

java多线程中的死锁

标签:

原文地址:http://www.cnblogs.com/yeming/p/5452777.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!