ConcurrentQueue队列的基本使用方式

 队列(Queue)代表了一个先进先出的对象集合。当您需要对各项进行先进先出的访问时,则使用队列。当您在列表中添加一项,称为入队,当您从列表中移除一项时,称为出队

  ConcurrentQueue<T>队列是一个高效的线程安全的队列,是.Net Framework 4.0,System.Collections.Concurrent命名空间下的一个数据结构。

复制代码

11 对列初始化: 2 2 3 3 ConcurrentQueue<ApiLogContract> Queue = new ConcurrentQueue<ApiLogContract>(); 4 4 5 5 /// <summary> 6 6 /// 单条入队列 7 7 /// </summary> 8 8 /// <param name="model">入列模型</param> 9 9 1010 Queue.Enqueue(model); 1111 1212 1313 1414 /// <summary> 1515 /// 多条入队 1616 /// </summary> 1717 /// <param name="list"></param> 1818 1919 List<ApiLogContract> list = new List<ApiLogContract>(); 2020 2121 list.add(new model{}); 2222 2323 list.add(new model{}); 2424 2525 list.add(new model{}); 2626 2727 list.add(new model{}); 2828 2929 list.ForEach(t => Enqueue(t)); 3030 3131 3232 3333 /// <summary> 3434 /// 单条出队 3535 /// </summary> 3636 /// <returns></returns> 3737 3838 ApiLogContract apiLog = null; 3939 Queue.TryDequeue(out apiLog); 4040 4141 4242 4343 /// <summary> 4444 /// 多条出队 4545 /// </summary> 4646 /// <param name="count">数量</param> 4747 /// <returns></returns> 4848 4949 var logs = new List<ApiLogContract>(); 5050 5151 if (Queue.Count > 0) 5252 { 5353   for (int i = 0; i < count; i++) 5454   { 5555     var source = Dequeue(); 5656     if (source != null) 5757     { 5858       logs.Add(source); 5959     } 6060   } 6161 }

复制代码

复制代码

1/// <summary> 2/// 获取对列数量 3/// </summary> 4/// <returns></returns> 5Queue.Count 6 7 8 9/// <summary> 10/// 确定序列是否包含任何元素[用于判断对列是否有要处理的数据]这个方法的性能比Count()方法快 11/// </summary> 12/// <returns></returns> 13 14Queue.Any()

复制代码

以上就是对列的基本使用方法。

对列的使用场景有很多。所有要异步处理的都可以使用对列的方式。如接口日志异步处理,邮件、短信异步发送等。对列一般配合单例设计模式和线程一起使用更佳。

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

java实现队列的详细代码

一、什么是队列结构一种线性结构,具有特殊的运算法则【只能在一端(队头)删除,在另一端(队尾)插入】。分类:1.顺序队列结构2.链式队列结构基本操作:1.入队列2.出队列  二:准备数据staticfinal intQUEUELEN15;classDATA{          String

【数据结构和算法:简单方法】谈一谈优先队列的实现

【系列文章推荐阅读】首先回忆一下队列(详细内容移步至),只要记住八个字即可:先进先出(FIFO),后进后出(LILO)。就像去医院门诊看病排队时一样:先来的先看,看完先走。而优先队列的特性正是“优先”二字,“优先”二字意味着打破了“常规”“规则”。优先队列不再遵守普通队列的先进先出的原则了,如何不遵守呢?最大优先队列:不管入队顺序如何,

Django中Admin中的一些参数配置

设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable