zoukankan      html  css  js  c++  java
  • 黄聪:队列Queue笔记

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading;

    namespace ConsoleApplication2
    {
    class Program
    {
    static void Main(string[] args)
    {
    DocumentManager dm
    = new DocumentManager();
    ProcessDocument.Start(dm);

    for (int i = 0; i < 1000; i++)
    {
    Document doc
    = new Document("Doc " + i, "Content");
    dm.AddDocument(doc);
    Console.WriteLine(
    "Added document Doc "+ i);
    Thread.Sleep(
    new Random().Next(20));
    }
    }
    }


    public class DocumentManager
    {
    private readonly Queue<Document> documentQueue = new Queue<Document>();

    public void AddDocument(Document doc)
    {
    lock (this)
    {
    documentQueue.Enqueue(doc);
    }
    }

    public Document GetDocument()
    {
    Document doc
    = null;
    lock (this)
    {
    doc
    = documentQueue.Dequeue();
    }
    return doc;
    }

    public bool IsDocumentAvailable
    {
    get {
    return documentQueue.Count > 0;
    }
    }
    }

    public class ProcessDocument
    {
    private DocumentManager documentManager;

    protected ProcessDocument(DocumentManager dm)
    {
    this.documentManager = dm;
    }

    public static void Start(DocumentManager dm)
    {
    new Thread(new ProcessDocument(dm).Run).Start();
    }

    protected void Run()
    {
    while (true)
    {
    if (documentManager.IsDocumentAvailable)
    {
    Document doc
    = documentManager.GetDocument();
    Console.WriteLine(
    "Processing document {0}",doc.Title);
    }
    Thread.Sleep(
    new Random().Next(20));
    }
    }
    }
    }

  • 相关阅读:
    ios面试题(二)
    ios之自定义UINavigationBar
    ios之自定义导航栏上的返回按钮
    ios之键盘的自定义
    ios之UITabelViewCell的自定义(xib实现2)
    ios之UITabelViewCell的自定义(xib实现)
    ios之UITabelViewCell的自定义(代码实现)
    ios 登录功能学习研究
    Create Table操作
    C#数据库查询和操作大全
  • 原文地址:https://www.cnblogs.com/huangcong/p/1734500.html
Copyright © 2011-2022 走看看