C# 对象锁

对象锁

        public static object obj = new object();

        private void Test()
        {
            Debug.Print("开始对象锁测试");
            Thread t1 = new Thread(new ThreadStart(Sleep3s));
            Thread t2 = new Thread(new ThreadStart(Sleep3s));
            Thread t3 = new Thread(new ThreadStart(Sleep3s));
            t1.Start();
            t2.Start();
            t3.Start();
            Debug.Print("完成对象锁测试");
        }

        //正常调用
        public void Sleep3s()
        {
            Debug.Print("进入Sleep3s 大门");
            Debug.Print("进入Sleep3s 房门");
            Thread.Sleep(3000);
            Debug.Print("离开Sleep3s 房门");
        }
        //正常结果:
        //开始对象锁测试
        //完成对象锁测试
        //进入Sleep3s 大门
        //进入Sleep3s 房门
        //进入Sleep3s 大门
        //进入Sleep3s 房门
        //进入Sleep3s 大门
        //进入Sleep3s 房门
        //离开Sleep3s 房门
        //离开Sleep3s 房门
        //离开Sleep3s 房门

        //添加对象锁
        public void Sleep3s()
        {
            Debug.Print("进入Sleep3s 大门");
            lock (obj)
            {
                Debug.Print("进入Sleep3s 房门");
                Thread.Sleep(3000);
                Debug.Print("离开Sleep3s 房门");
            }
        }
        //对象锁结果:
        //开始对象锁测试
        //进入Sleep3s 大门
        //进入Sleep3s 房门
        //进入Sleep3s 大门
        //完成对象锁测试
        //进入Sleep3s 大门
        //离开Sleep3s 房门
        //进入Sleep3s 房门
        //离开Sleep3s 房门
        //进入Sleep3s 房门
        //离开Sleep3s 房门

posted @ 2022-07-05 15:50  8848-自律即自由  阅读(266)  评论(0编辑  收藏  举报