c#线程--生产者和消费者

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Security;
using System.Text;
using System.Threading; namespace ConsoleApp
{
class Test
{ static void Main()
{
product pro = new product();
setProduct set = new setProduct(pro, );
getProduct get = new getProduct(pro, ); Thread producer = new Thread(new ThreadStart(set.run));
Thread consumer = new Thread(new ThreadStart(get.run));
producer.Start();
consumer.Start();
Console.ReadLine();
}
} class getProduct
{
private product pro;
private int quality = ;
public getProduct(product pro,int request)
{
this.pro = pro;
quality = request;
}
public void run()
{
for (int i = ; i < quality; i++)
{
pro.getProduct();
}
}
} class setProduct
{
private product pro;
private int quality = ;
public setProduct(product pro, int request)
{
this.pro = pro;
quality = request;
}
public void run()
{
for (int i = ; i < quality; i++)
{
pro.setProduct(i);
}
}
} class product
{
private int cellContents;
private bool setflage = false;
public int setProduct(int n)
{
lock (this)
{
if (setflage)
{
Monitor.Wait(this);
}
Console.WriteLine("生产中。。。"+n);
cellContents = n;
setflage = true;
Monitor.Pulse(this);
}
return cellContents;
}
public void getProduct()
{
lock (this)
{
if (!setflage)
{
Monitor.Wait(this);
}
Console.WriteLine("消耗中。。。" + cellContents);
setflage = false;
Monitor.Pulse(this);
}
}
}
}
上一篇:自定义注解&Spring AOP实现为原程序加入Redis缓存支持(可重用)


下一篇:在线HTTP POST/GET接口测试工具 - aTool在线工具