• 多线程(死锁)


    线程死锁的原因:

    同步中嵌套同步,但是锁却不同

    死锁演示(DeadLockDemo):

    class Test implements Runnable
    {
        private boolean flag;
        //构造函数中传入标记的值,用来操作run方法中的if else循环
        Test(boolean flag)
        {
            this.flag = flag;
        }
    
        public void run()
        {
            if(flag)
            {
                while(true)
                {
                    synchronized(MyLock.lockA)
                    {
                        System.out.println(Thread.currentThread().getName()+"...if lockA ");
                        synchronized(MyLock.lockB)
                        {
                            System.out.println(Thread.currentThread().getName()+"..if lockB");                    
                        }
                    }
                }
            }
            else
            {
                while(true)
                {
                    synchronized(MyLock.lockB)
                    {
                        System.out.println(Thread.currentThread().getName()+"..else lockB");
                        synchronized(MyLock.lockA)
                        {
                            System.out.println(Thread.currentThread().getName()+".....else lockA");
                        }
                    }
                }
            }
        }
    }
    
    //放置了两个锁
    class MyLock
    {
        static Object lockA = new Object();
        static Object lockB = new Object();
    }
    
    class  DeadLockTest
    {
        public static void main(String[] args) 
        {
            //传入true使其在if循环中
            Thread t1 = new Thread(new Test(true));
            //传入false使其在if循环中
            Thread t2 = new Thread(new Test(false));
            t1.start();
            t2.start();
        }
    }
    DeadLockDemo
  • 相关阅读:
    Codeforces Round #417 C. Sagheer and Nubian Market
    linux 终端抓包命令
    计算机网络体系结构分析
    排序算法-快速排序
    排序算法-堆排序
    排序算法-希尔排序
    排序算法-插入排序
    排序算法-冒泡排序
    排序算法-选择排序
    杂谈:终端小工具
  • 原文地址:https://www.cnblogs.com/gzc911/p/4905892.html
Copyright © 2020-2023  润新知