zoukankan      html  css  js  c++  java
  • 线程的同步:锁、死锁

    lock实现代码块只允许被一个线程访问

    例如多个窗口售票,余票数的计算

    using System;
    using System.Threading;
    
    namespace ConsoleApplication3
    {
        class Program
        {
            int num = 10;
            void SellTicket()//售票
            {
                while (true)
                {
                    lock (this)//同一时间,只允许一个线程执行此代码块
                    {
                        if (num > 0)
                        {
                            Thread.Sleep(100);
                            Console.WriteLine(Thread.CurrentThread.Name + "剩余票数:" + num);
                            num -= 1;
                        }
                    }               
                }
            }
            static void Main(string[] args)
            {
                Program p = new Program();//类的对象,方便引用静态成员
                Thread t1 = new Thread(p.SellTicket);
                t1.Name="窗口1";
                Thread t2 = new Thread(p.SellTicket);
                t2.Name = "窗口2";
                Thread t3 = new Thread(p.SellTicket);
                t3.Name = "窗口3";
                t1.Start();
                t2.Start();
                t3.Start();
            }
        }
    }
  • 相关阅读:
    自动完成
    自动验证[2]
    自动验证[1]
    PHP算法
    用户请求服务器资源过程
    CURD 操作 [2]
    [转]PHP部分常见算法
    CURD 操作 [1]
    常用正则表达式集锦
    centos 6.4 FTP安装和配置
  • 原文地址:https://www.cnblogs.com/xixixing/p/10834647.html
Copyright © 2011-2022 走看看