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 @   8848-自律即自由  阅读(268)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示