zoukankan      html  css  js  c++  java
  • 多线程操作的例子

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Threading;
    namespace ConsoleApplication5
    {
        public class Contract
        {
            private string id;
            private string from;
            private string to;
            private decimal fee;
            public string ID { get { return id; } private set { id = value; } }
            public string From { get { return from; } set { from = value; } }
            public string To { get { return to; } set { to = value; } }
            public decimal Fee { get { return fee; } set { fee = value; } }
            public Contract(string from,string to,decimal fee)
            {
                this.From=from;
                this.To=to;
                this.Fee=fee;
                this.ID = DateTime.Now.ToBinary().ToString().Replace("-", String.Empty);
            }
        }
        public class HouseMovingCompany 
        { 
            private static HouseMovingCompany _instance = null; 
            public static HouseMovingCompany Instance 
            {  
                get { return (_instance == null ? _instance = new HouseMovingCompany() : _instance); } 
            }
            private List<Contract> cc;
            public List<Contract> Contracts
            {
                get { return cc; }
                private set{cc=value;} }
            public HouseMovingCompany() 
            { 
                this.Contracts = new List<Contract>();
            } 
            public void MoveHouse() 
            {
                if (this.Contracts == null || this.Contracts.Count == 0)
                {
                    return;
                }
                Contract contract;
                lock (Contracts)
                {
                     contract = this.Contracts[0];
                }
                this.Contracts.RemoveAt(0); 
                if (!String.IsNullOrEmpty(contract.From) && !String.IsNullOrEmpty(contract.To)) 
                { 
                    Console.WriteLine("Move the house from {0} to {1}.", contract.From, contract.To);
                } 
                Thread.Sleep(5000); 
            }
        }
        class Program
        {
            static void Main(string[] args)
            {
               // Contract cc=new Contract();

                HouseMovingCompany.Instance.Contracts.Add(new Contract ("WuDaokou", "LinDa Road", 500 ));
                HouseMovingCompany.Instance.Contracts.Add(new Contract ("XiDan",  "WangFujing",1000 ));
                HouseMovingCompany.Instance.Contracts.Add(new Contract ("XiangShan",  "The Forbidden City", 10000 )); 
                Thread thread = null;
                while (HouseMovingCompany.Instance.Contracts.Count > 0) 
                { 
                    thread = new Thread(new ThreadStart(HouseMovingCompany.Instance.MoveHouse)); 
                    thread.Start(); 
                }
                Console.Read();
            }
        }
    }

  • 相关阅读:
    Object C学习笔记19-枚举
    Object C学习笔记18-SEL,@ selector,Class,@class
    Object C学习笔记17-动态判断和选择器
    Object C学习笔记16-委托(delegate)
    CopyOnWriteArrayList源码解析
    企业项目开发--切分配置文件
    常用Java集合类总结
    HashSet源码解析
    网络工具使用情况分析
    邮件营销的准则
  • 原文地址:https://www.cnblogs.com/lijinchang/p/1961303.html
Copyright © 2011-2022 走看看