zoukankan      html  css  js  c++  java
  • [面试]死锁-最简单的死锁demo

    死锁

    什么是死锁

    (百度百科) 死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁

    请写一个死锁Demo

    public class DeadLock {
        private static Object lock1 = new Object();
        private static Object lock2 = new Object();
    
        public static void main(String[] args) {
            new Thread(() -> {
                synchronized (lock1) {
                    sleep(2000);
                    System.out.println("线程1, 等lock2");
                    synchronized (lock2) {
                        System.out.println("线程1完成");
                    }
                }
            }).start();
    
            new Thread(() -> {
                synchronized (lock2) {
                    sleep(2000);
                    System.out.println("线程2, 等lock1");
                    synchronized (lock1) {
                        System.out.println("线程2完成");
                    }
                }
            }).start();
        }
    
        private static void sleep(long time) {
            try {
                Thread.sleep(time);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    
    }
    

     发现两个线程都不会打印出"完成", 因为产生了死锁, 都在等待对方持有的锁.

  • 相关阅读:
    java中的Runtime类
    java web 三大核心组件Filter
    springBoot 整合mybaits 逆向工程
    java内存区域之程序计数器
    spring mvc 注解整理(一)
    ELK 日志查询分析nginx日志
    npm 淘宝镜像
    两种网页截图功能
    url 编码解码
    对防火墙的理解
  • 原文地址:https://www.cnblogs.com/noKing/p/9189708.html
Copyright © 2011-2022 走看看