public ThreadPooling()
        {
            Console.WriteLine("***********Using the ThreadPool***********");
            Console.WriteLine("Currently Executing in Thread {0}", Thread.CurrentThread.ManagedThreadId);

            RandomIntervalPrinter printer = new RandomIntervalPrinter(10, 3);
            WaitCallback workItem = new WaitCallback(ExecutePrinter);

            for (int i = 0; i < 10; i++)
                ThreadPool.QueueUserWorkItem(workItem, printer);

            Console.WriteLine("All tasks queued");
        }
        public ConcurrencyEmulator()
        {
            Console.WriteLine("********Studying Concurrency Issues********");
            RandomIntervalPrinter printer = new RandomIntervalPrinter(10, 5);

            Thread[] threads = new Thread[10];

            for (int i = 0; i < threads.Length; i++)
            {
                threads[i] = new Thread(new ThreadStart(printer.Execute));
                threads[i].Name = string.Format("Worker thread #{0}", i);
            }

            foreach (Thread thread in threads)
                thread.Start();
        }