zoukankan      html  css  js  c++  java
  • 多线程07-Monitor.TryEnter

        class Program
        {
            static void Main()
            {
                object lock1 = new object();
                object lock2 = new object();
                new Thread(() => LockTooMuch(lock1, lock2)).Start();
                lock (lock2)
                {
                    Thread.Sleep(1000);
                    Console.WriteLine("Monitor.TryEnter allows not to get stuck,returning false after a specified timeout is elapsed");
                    if (Monitor.TryEnter(lock1, TimeSpan.FromSeconds(5)))
                    {
                        Console.WriteLine("Acquired a protected resourece success");
                    }
                    else
                    {
                        Console.WriteLine("time out to get a resource");
                    }
                }
                new Thread(() => LockTooMuch(lock1, lock2)).Start();

                lock (lock2)
                {
                    Console.WriteLine("this will be a deadlock");
                    Thread.Sleep(1000);
                    lock (lock1)
                    {
                        Console.WriteLine("Acquired a protected resourece success");
                    }
                }


            }
            static void LockTooMuch(object lock1, object lock2)
            {
                lock (lock1)
                {
                    Thread.Sleep(1000);
                    lock (lock2)
                    {

                    }
                }
            }

        }
  • 相关阅读:
    防采集策略『blueidea』
    关于进程和线程『整理』
    数据采集『blueidea』
    搜索引擎营销的一些策略『来源:点石互动搜索引擎优化博』
    AJAX之通讯技术简介
    使用AJAX技术构建更优秀的Web应用程序
    AJAX相关JS代码片段和浏览器模型『』
    RDLC报表:每页显示N条记录
    ObjectMapper .NET
    How to Hash Data with Salt
  • 原文地址:https://www.cnblogs.com/shidengyun/p/5600942.html
Copyright © 2011-2022 走看看