zoukankan      html  css  js  c++  java
  • 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){
                
                }
            }
        }
    }
  • 相关阅读:
    英语语法学习
    react-hook
    rrweb手机端录屏,pc端使用
    uni-app
    日期
    Mongodb 保存地理信息 并实现范围检索
    webpack2.2API阅读笔记
    react-lazyload
    项目中常用的各个依赖包的解释
    Android-----test----monkeyrunner
  • 原文地址:https://www.cnblogs.com/xlwu/p/13576848.html
Copyright © 2011-2022 走看看