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){
                
                }
            }
        }
    }
  • 相关阅读:
    slice()与splice()
    apply和call函数
    参数arguments
    获取用户当前位置并设为中心点
    数组中元素为对象形式的去重
    判断浏览器环境(微信、支付宝)
    h5车牌号输入键盘
    点击事件的延迟
    jQuery修改伪元素
    webSocket认识
  • 原文地址:https://www.cnblogs.com/xlwu/p/13576848.html
Copyright © 2011-2022 走看看