대기열Queue 사용
6460 단어 Queue
class Document
{
public string Title { get; private set; }
public string Content { get; private set; }
public Document(string title, string content)
{
this.Title = title;
this.Content = content;
}
}
DocumentManager 클래스:
class DocumentManager
{
private readonly Queue<Document> documentQueue = new Queue<Document>();
public bool IsAvailable
{
get { return documentQueue.Count > 0; }
}
public void AddDocument(Document doc)
{
lock (this)
{
documentQueue.Enqueue(doc);
}
}
public Document GetDocument()
{
Document doc = null;
lock (this)
{
doc = documentQueue.Dequeue();
}
return doc;
}
}
ProcessDocuments 클래스:
class ProcessDocuments
{
private DocumentManager dm;
protected ProcessDocuments(DocumentManager dm)
{
this.dm = dm;
}
protected void Run()
{
while (true)
{
if (dm.IsAvailable)
{
Document doc = dm.GetDocument();
Console.WriteLine("processing document {0}", doc.Title);
}
Thread.Sleep(new Random().Next(20));
}
}
public static void Start(DocumentManager dm)
{
new Thread(new ProcessDocuments(dm).Run).Start();
}
}
레이어 적용:
class Program
{
static void Main(string[] args)
{
var dm = new DocumentManager();
ProcessDocuments.Start(dm);
for (int i = 0; i < 100; i++)
{
Document doc = new Document("Doc" + i.ToString(), "content");
dm.AddDocument(doc);
Console.WriteLine("Added document {0}", doc.Title);
Thread.Sleep(new Random().Next(20));
}
Console.ReadLine();
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
leetcode || 117、Populating Next Right Pointers in Each Node IIproblem: Follow up for problem "Populating Next Right Pointers in Each Node". What if the given tree could be any binary...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.