博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Queue学习
阅读量:5933 次
发布时间:2019-06-19

本文共 2705 字,大约阅读时间需要 9 分钟。

一,队列的实现

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading;using System.Threading.Tasks;namespace bingfa{    class Program    {        //实例引用类型的私有对象,用来实现锁的操作,当这个对象释放,下一个才可以调用锁住的方法        private static object o = new object();         static void Main(string[] args)        {            //开启线程监听            UserHelper.Instance.Start();            //实现多并发            Task t1 = Task.Factory.StartNew(() =>            {                AddUser();            });            Task t2 = Task.Factory.StartNew(() =>            {                AddUser();            });            Task.WaitAll(t1, t2);            Console.ReadKey();        }        //集合数据添加操作        static void AddUser()        {            Parallel.For(0, 10, (i) =>            {                lock (o)   // 添加锁,避免丢失                {                    UserHelper.Instance.AddQueue("Name" + i);                }            });        }    }    //队列临时类      public class UserInfo    {        public string Name { get; set; }    }    public class UserHelper    {        #region 使用队列和锁,实现当多并发是出现的请求丢失        public readonly static UserHelper Instance = new UserHelper();        private UserHelper()        { }        private Queue
LQueue = new Queue
(); public void AddQueue(string Name) //入列 { UserInfo qinfo = new UserInfo(); qinfo.Name = Name; LQueue.Enqueue(qinfo); } public void Start()//启动线程 { Thread thread = new Thread(threadStart); thread.IsBackground = true; thread.Start(); } private void threadStart() //现成监听方法 { while (true) { if (LQueue.Count > 0) { try { ShowQueue(); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } } else { //没有任务,休息3秒钟 Thread.Sleep(3000); } } } //执行的方法,即是当有对象进入队列的实现方法 private void ShowQueue() { while (LQueue.Count > 0) { try { //从队列中取出数据进行操作 UserInfo qinfo = LQueue.Dequeue(); Console.WriteLine(qinfo.Name); } catch (Exception ex) { throw; } } } #endregion }}

 

转载于:https://www.cnblogs.com/May-day/p/6669431.html

你可能感兴趣的文章
iscsi网络存储LVM逻辑卷和RAID5卷
查看>>
学以致用 知行合一 ——《产品管理与研发项目管理》课程有感
查看>>
Part I Week 2:可枚举与不可枚举
查看>>
办公室几台电脑怎么连一台打印机的具体步骤
查看>>
Photoshop快捷键大图
查看>>
互联网教育,未来当有这10个特质
查看>>
Windows Azure SSTP模式×××配置
查看>>
mysql 添加新用户
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
图像边框 border-image属性
查看>>
了解Parallels中的 Modern.IE 测试环境
查看>>
运维自动化之zabbix (macros)(6)
查看>>
负载均衡基础实践
查看>>
流量监控与端口镜像
查看>>
《Windows服务器配置与管理》 文件共享服务器搭建
查看>>
linux 配置手册(一) Linux 基本网络配置
查看>>
ServletConfig对象和ServletContext对象
查看>>
Kubernetes之路 2 - 利用LXCFS提升容器资源可见性
查看>>
Java源码解读扫盲【集合--HashMap】
查看>>