天天看點

C#多線程,線程鎖

/*

 * User: Administrator

 * Email:[email protected]

 * Date: 2013-7-18

 * Time: 22:54

 */

using System;

using System.Threading;

namespace ThreadDome

{

    class Program

    {

        //建立一個線程鎖辨別

        private static object threadLock = new object();

        public static void Main(string[] args)

        {

            //使10個線程全部指向同一個方法

            Thread [] threads = new Thread[10];

            for (int i = 0; i < 10; i++) {

                threads[i]= new Thread(new ThreadStart(PrintNumbers));

                threads[i].Name = string.Format("Worker thread{0}",i);

                //設定為背景線程

                threads[i].IsBackground =true;

            }

            //啟動線程

            foreach (Thread t  in threads) {

                t.Start();

            Console.ReadKey();

        }

        public static  void PrintNumbers()

            lock(threadLock)

            {

                Console.WriteLine("線程——>{0}正在執行 ",Thread.CurrentThread.Name);

                for (int i = 0; i < 100; i++) {

                    Random r = new Random ();

                    Thread.Sleep(60*r.Next(6));

                    Console.WriteLine("{0}",i);

                }

                Console.WriteLine();

    }

}