• synchronized中的死锁


    案例:

    package com.javaSe.DeadLock;
    /*
    死锁代码要会写。
        一般面试官会要求你会写。
        只有会写的,才会在以后的开发中注意这个事情。
        因为死锁很难调试。
    */
    public class DeadfLock {
        public static void main(String[] args) {
            Object o1 = new Object();
            Object o2 = new Object();
            
            // t1和t2两个线程共享o1,o2
            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) {
                    e.printStackTrace();
                }
                synchronized (o2){
                
                }
            }
        }
    }
    
    
    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) {
                    e.printStackTrace();
                }
                synchronized (o1){
                
                }
            }
        }
    }
  • 相关阅读:
    hdu5441Travel【并查集】
    笔试题 brotherword【tire || hash】
    20150917
    字典树模板
    三维凸包模板
    HUST1341A Simple Task【模拟】
    hust1350Trie【字典树+dfs || 字典树 + LCA】
    kmp笔试题。。
    poj3461Oulipo【kmp】
    【转帖】如何看外文文献
  • 原文地址:https://www.cnblogs.com/xlwu/p/13576848.html
Copyright © 2020-2023  润新知