C#-----线程安全的ConcurrentQueue<T>队列

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

  • IsEmpty  获取一个值,判断是否为空
  • Count  获取包含的元素数
  • Enqueue(T item)  将对象添加到队列的结尾处
  • TryDequeue(out T result)  尝试移除并返回并发队列开头处的对象
  • TryPeek(out T result)  尝试返回开头处的对象但不将其移除
  • ElementAt(int index)  返回序列中的指定索引处的元素
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TestConcurrentQueue
{
    class Program
    {
        static void Main(string[] args)
        {
            //ConcurrentQueue 表示线程安全的先进先出 (FIFO) 集合
            ConcurrentQueue<Employee> currendQueue = new ConcurrentQueue<Employee>();
            Employee empOne = new Employee("王晶", "", 20, "市场部");
            Employee empTwo = new Employee("陈浩民", "", 24, "技术部");
            Employee empThree = new Employee("王诗玲", "", 25, "市场部");
            //Enqueue(T item) 将对象添加到结尾处
            currendQueue.Enqueue(empOne);
            currendQueue.Enqueue(empTwo);
            currendQueue.Enqueue(empThree);

            //获取包含的元素数
            if (currendQueue.Count > 0)
            {
                //TryDequeue(out T result) 尝试移除并返回并发队列开头处的对象
                currendQueue.TryDequeue(out Employee employee);
                Console.WriteLine(employee);

                if (currendQueue.Count > 0)
                {
                    for (int i = 0; i < currendQueue.Count; i++)
                    {
                        Employee emp = currendQueue.ElementAt(i);
                        Console.WriteLine(emp);
                    }
                }
            }
        }
    }

    /// <summary>
    /// 雇员类
    /// </summary>
    class Employee
    {
        /// <summary>
        /// 雇员姓名
        /// </summary>
        public string EmpName { get; set; }
        /// <summary>
        /// 雇员性别
        /// </summary>
        public string EmpSex { get; set; }
        /// <summary>
        /// 雇员年龄
        /// </summary>
        public int EmpAge { get; set; }
        /// <summary>
        /// 雇员部门
        /// </summary>
        public string DeptName { get; set; }
        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="empName"></param>
        /// <param name="empSex"></param>
        /// <param name="empAge"></param>
        /// <param name="deptName"></param>
        public Employee(string empName, string empSex, int empAge, string deptName)
        {
            EmpName = empName;
            EmpSex = empSex;
            EmpAge = empAge;
            DeptName = deptName;
        }

        public override string ToString()
        {
            return "Employee[EmpName=" + EmpName + ",EmpSex=" + EmpSex + ",EmpAge=" + EmpAge + ",DeptName=" + DeptName + "]";
        }
    }
}

 

转载于:https://www.cnblogs.com/fengfuwanliu/p/10642191.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值