zoukankan      html  css  js  c++  java
  • 蛙蛙推荐:写了一个简单的延迟队列

    写了一个简单的延迟队列,用于处理短时大量请求的情况,可以设置队列处理Handler,每次取队列的时间间隔,以及每次取多少队列项进行处理。

    队列处理是同步执行。

    public class LazyQueue<T>
    {
    public LazyQueue(Action<T> handler, int inteval, int onecount)
    {
    _handler
    = handler;
    _inteval
    = inteval;
    _onecount
    = onecount;
    _t
    = new Thread(ThreadProc);
    _t.Name
    = "LazyQueue";
    _t.IsBackground
    = true;
    }
    public void EnQueue(T item)
    {
    lock (_queue)
    {
    _queue.Enqueue(item);
    }
    }
    public void Start()
    {
    _t.Start();
    }

    private void ThreadProc(object state)
    {
    while (true)
    {
    try
    {
    List
    <T> tempItems = new List<T>(_onecount);
    lock (_queue)
    {
    for (int i = _onecount - 1; i >= 0; i--)
    {
    if (_queue.Count > 0)
    {
    tempItems.Add(_queue.Dequeue());
    }
    }
    }
    tempItems.ForEach(_handler);

    }
    catch (Exception ex)
    {
    System.Diagnostics.Trace.TraceError(
    "ThreadProc error:{0}", ex);
    }

    Thread.Sleep(_inteval);
    }
    }

    private Queue<T> _queue = new Queue<T>();
    private Action<T> _handler = null;
    private int _inteval = 0;
    private int _onecount = 0;
    private Thread _t = null;
    }
  • 相关阅读:
    小点
    三.一些常用类
    字符串相关:String,StringBuffer,StringBuilder
    五.二叉树
    四.递归
    三.队列
    二.栈
    一.数组,链表
    RDLC 矩阵图片列表排列顺序乱
    RDLC 矩阵每隔一页就有空白页 矩阵 空白页
  • 原文地址:https://www.cnblogs.com/onlytiancai/p/2099833.html
Copyright © 2011-2022 走看看