Java 初学者-死锁机制

今天学习了java的死锁机制。

package DeadLock;

public class DeadLosk {
    public static void main(String[]args) {
        Object o1=new Object();
        Object o2=new Object();
        Thread t1=new MyThread1(o1,o2);
        Thread t2=new MyThread2(o1,o2);
        t1.start();
        t2.start();
    }
}
class MyThread1 extends Thread{
    Object o1;
    Object o2;
    public MyThread1(Object o1,Object o2){
        this.o1=o1;
        this.o2=o2;
    }
    public void run() {
        synchronized (o1) {
            try {
                Thread.sleep(1000);//睡眠必定发生死锁
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            synchronized (o2) {
                System.out.println("t1");
            }
        }
    }
    
    
}
class MyThread2 extends Thread{
    Object o1;
    Object o2;
    public MyThread2(Object o1,Object o2){
        this.o1=o1;
        this.o2=o2;
    }
    public void run() {
        synchronized (o2) {
            /*
             * try { // Thread.sleep(1000); } catch (InterruptedException e) { // TODO
             * Auto-generated catch block e.printStackTrace(); }
             */
            synchronized (o1) {
                System.out.println("t2");
            }
        }
    }
    
    
}
View Code

我们需要避免这种情况的发生。

虽然线程并没有完全学完,但对于现在的我并不是特别需求,所以先学到这里。

明天计划吧多线程总结一下。

posted @ 2020-08-27 21:02  好吗,好  阅读(87)  评论(0)    收藏  举报