博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Thread和ThreadPool的应用解析
阅读量:5362 次
发布时间:2019-06-15

本文共 1801 字,大约阅读时间需要 6 分钟。

1 以下情况下请使用Thread:

  (1)要控制所创建线程的优先级;

  (2)希望所使用的线程维护其标识,该标识要与线程一起进行各种操作,经过许多不同的时段;

  (3)所使用的线程的寿命较长;

  

   class EntryPoint

   {

        static int interval;

        static void Main()

        {

              Console.Write("Interval to display results at?>");

              interval=int.Parse(Console.ReadLine());

              Thread thisThread = Thread.CurrentThread;

              thisThread.Name="Main Thread";

              ThreadStart WorkerStart=new ThreadStart(StartMethod);

              workerThread.Name="Worker";

              workerThread.Start();

             

              DisplayNumbers();

              Console.WriteLine("Main Thread Finished");

              Console.ReadLine();

        }

      

        Static void StartMethod()

        {

            DisplayNumbers();

            Console.WriteLine("Worker Thread Finished");

        }

 

        Static void DisplayNumbers()

        {

              Thread thisThread=Thread.CurrentThread;

              string name=thisThread.Name;

              Console.WriteLine("Starting thread:"+name);

              Console.WriteLine(name+":Current Culture="+thisThread.CurrentCulture);

             

              for(int i=1;i<=8*interval;i++)

              {

                  if(i%interval==0)

                      Console.WriteLine(Name+":count has reached"+i);

              }

        }

   }

2 以下情况请使用ThreadPool

  (1)要以最简单的方式创建和删除线程;

  (2)应用程序使用线程的性能要优先考虑;

    using System;

    using System.Collections.Generic;

    using System.Text;

    using System.Threading;

 

    namespace ConsoleApplication1

    {

        class Program

        {

             Console.Write("Interval to display results at?>");

             interval=int.Parse(Console.ReadLine());

 

             ThreadPool.QueueUserWorkItem(new WaitCallback(StartMethod));

             Thread.Sleep(100);

             ThreadPool.QueueUserWorkItem(new WaitCallback(StartMethod));

             Console.ReadLine();

        }

 

        Static void StartMethod(Object stateInfo)

        {

            DisplayNumbers("Thread"+DateTime.Now.Millisecond.ToString());

            Console.WriteLine("Thread Finished");

        }

 

        Static void DisplayNumbers(String GivenThreadName)

        {

          

              Console.WriteLine("Starting thread:"+GivenThreadName);

             

              for(int i=1;i<=8*interval;i++)

              {

                  if(i%interval==0)

                  {

                      Console.WriteLine("count has reached"+i);

                      Thread.Sleep(1000);

                  }

              }

        }

    }

转载于:https://www.cnblogs.com/marslin/p/3473325.html

你可能感兴趣的文章
黑客攻防入门秘籍
查看>>
Swift迎来了1.0 GM 版(2014.09.09)
查看>>
【iOS开发-68】APP下载案例:利用tableView自带的cell布局+缓存池cell复用时注意button状态的检查...
查看>>
《Genesis-3D开源游戏引擎-FQA常见问题解答》2014年01月10号版本
查看>>
Java 编程下实现随机无重复数字功能
查看>>
Android 编程下的代码混淆
查看>>
animation属性
查看>>
页内的模块和组件抽象规划经验
查看>>
安全-分析深圳电信的新型HTTP劫持方式
查看>>
将Centos的yum源更换为国内的阿里云源
查看>>
git diff 的用法
查看>>
一段sql的优化
查看>>
十进制与十六进制的相互转换
查看>>
在Flex中用Validator检测数字、字符串、Email.
查看>>
[leetcode]4Sum
查看>>
POJ1062 昂贵的聘礼
查看>>
【零基础学习iOS开发】【02-C语言】08-基本运算
查看>>
Java 将指定字符串连接到此字符串的结尾 concat()
查看>>
Hibernate Criterion
查看>>
Python知识
查看>>