• 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){
                
                }
            }
        }
    }
  • 相关阅读:
    PHP笔试题
    找工作的几种方式
    ThinkPHP3.2.3学习笔记5---模板(一)
    PHP7新特性
    了解Web Uploader
    什么是云购网
    使用PDO操作数据库的好处
    MySQL与MongoDB的区别
    显示和编辑注解
    自定义验证逻辑
  • 原文地址:https://www.cnblogs.com/xlwu/p/13576848.html
Copyright © 2020-2023  润新知