예제 #1
0
    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();
    }
예제 #2
0
파일: Program.cs 프로젝트: monsterNY/vlxm
        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();
        }
예제 #4
0
        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();
        }