public static void Main() { MonitorDemo md = new MonitorDemo(); Thread t1 = new Thread(md.InserterMethod); Thread t2 = new Thread(md.ReaderMethod); t1.Name = "Inserter Thread"; t2.Name = "Reader Thread"; t1.Start(); t2.Start(); t1.Join(); t2.Join(); }
private static void MonitorDemoTest() { MonitorDemo instance = new MonitorDemo(); ThreadPool.QueueUserWorkItem((state => //销售由他人负责,故此处开启新线程执行 { Parallel.For(0, 100, (num) => //假设此商家有100个销售,由于销售与销售互不干扰,所以此处并行进行销售 { Thread.Sleep(100); //由于后续执行太快,无法看出效果,故此处新增延时处理 instance.Sell(); }); })); ThreadPool.QueueUserWorkItem((state => { Parallel.For(0, 100, (num) => //假设此商家有10个生产厂 { Thread.Sleep(100); instance.Make(); }); })); while (true) //每过一秒查看一次销售情况 { Thread.Sleep(1000); instance.Show(); } // demo.Run(); // // Console.ReadKey(true); /*Parallel.For(0, 10, (i => * { * try * { * demo.Run(); * } * catch (Exception e) * { * Console.WriteLine(e.Message); * } * finally * { * Console.WriteLine($"{i} over"); * //测试结果:部分线程无法走到此处,疑似死锁。 * } * }));*/ }
public static void Main(string[] args) { MonitorDemo demo = new MonitorDemo(); //创建一个添加项目到队列线程 Thread addThread = new Thread(new ThreadStart(demo.AddItem)); //修改addThread的运行优先级 addThread.Priority = ThreadPriority.BelowNormal; //创建一个删除项目线程 Thread removeThread = new Thread(new ThreadStart(demo.RemoveItem)); //启动添加项目线程 addThread.Start(); //启动删除项目线程 removeThread.Start(); }
static void printMonitorTest() { Thread[] threads = new Thread[10]; int j = 0; for (int i = 0; i < threads.Length; i++) { //通过循环创建10个线程。 threads[i] = new Thread(() => { Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.ms") + ":" + MonitorDemo.doBusiness(j.ToString())); j++; }); //为每个线程设置一个名字 threads[i].Name = "thread" + i; } //开启创建的十个线程 for (int i = 0; i < threads.Length; i++) { threads[i].Start(); } Console.Read(); }