lock(expression表达式) statement_block
Monitor.Enter(obj); (expression) Monitor.Exit(obj);
Mutex mutex = new Mutex(); mutex.WaitOne(); (expression) mutex.ReleaseMutex();
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
namespace TestThread
{
class Program
{
private static object lockObject = new object();
private static object lockObject2 = new object();
private static int iGetHBnum = 0;
private static int iPutHBnum = 0;
private static int count21 = 0;
private static int count22 = 0;
private static int count23 = 0;
private static int count11 = 0;
private static int count12 = 0;
static void Main(string[] args)
{
Console.WriteLine("主线程运行,线程ID:" + Thread.CurrentThread.ManagedThreadId.ToString());
Thread chushi1 = new Thread(PutHB);
chushi1.Priority = ThreadPriority.AboveNormal;
chushi1.Name = "11";
chushi1.Start();
Thread chushi2 = new Thread(PutHB);
chushi2.Priority = ThreadPriority.Normal;
chushi2.Name = "12";
chushi2.Start();
Thread Consume21 = new Thread(GetHB);
Consume21.Priority = ThreadPriority.Normal;
Consume21.Name = "21";
Consume21.Start();
Thread Consume22 = new Thread(GetHB);
Consume22.Priority = ThreadPriority.Normal;
Consume22.Name = "22";
Consume22.Start();
Thread Consume23 = new Thread(GetHB);
Consume23.Priority = ThreadPriority.Normal;
Consume23.Name = "23";
Consume23.Start();
Console.ReadKey();
}
public static void PutHB()
{
string strID = Thread.CurrentThread.Name.ToString();
Console.WriteLine("{0}厨师开始制作汉堡,,,", strID);
while (true)
{
if (iPutHBnum >= 6)
{
Console.WriteLine("厨师{0},最多放6个汉堡,请让销售员取再放!", strID);
Thread.Sleep(1000);
}
else
{
if (iGetHBnum >= 70 ||count11 + count12 >= 70)
{
if (strID == "11")
{
Console.WriteLine("厨师{0},在货架放共放{1}汉堡!", strID, count11);
}
else if (strID == "12")
{
Console.WriteLine("厨师{0},在货架放共放{1}汉堡!", strID, count12);
}
break;
}
lock (lockObject)
{
iPutHBnum++;
}
if (strID == "11")
{
count11++;
Console.WriteLine("厨师{0},在货架放已放{1}汉堡! 现在货架有{2}汉堡!", strID,count11, iPutHBnum);
}
else if (strID == "12")
{
count12++;
Console.WriteLine("厨师{0},在货架放已放{1}汉堡! 现在货架有{2}汉堡!", strID, count12, iPutHBnum);
}
}
}
}
public static void GetHB()
{
string strID = Thread.CurrentThread.Name.ToString();
Console.WriteLine("{0}销售员取汉堡,,,", strID);
while (true)
{
if (iPutHBnum <= 0)
{
Thread.Sleep(1000);
Console.WriteLine("{0}货架台已0个汉堡,请等待厨师制作!", strID);
}
else
{
lock (lockObject2)
{
iGetHBnum++;
iPutHBnum--;
}
if (strID == "23")
{
count23++;
Console.WriteLine("23号销售员已销售---{0}!",count23);
Thread.Sleep(3000);
}
else if (strID == "22")
{
count22++;
Console.WriteLine("22号销售员已销售---{0}!", count22);
Thread.Sleep(2000);
}
else if (strID == "21")
{
count21++;
Console.WriteLine("21号销售员已销售---{0}!", count21);
Thread.Sleep(1000);
}
}
if (iGetHBnum >= 70)
{
Console.WriteLine("销售完!");
if (strID == "23")
{
Console.WriteLine("23号销售员销售总数:{0}", count23);
}
else if (strID == "22")
{
Console.WriteLine("22号销售员销售总数:{0}", count22);
}
else if (strID == "21")
{
Console.WriteLine("21号销售员销售总数:{0}", count21);
}
break;
}
}
}
}
}
Monitor.Enter(lockObject); iPutHBnum++; Monitor.Exit(lockObject);
mutex1.WaitOne(); iPutHBnum++; mutex1.ReleaseMutex();
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有