c#多线程学习笔记一

线程会消耗大量的操作系统资源,多个线程共享一个物理处理器将导致操作系统忙于管理这些线程,而无法运行程序。
1:暂停线程

使用Thread.Sleep()使线程进入休眠状态,它会占用尽可能少的cpu,而不浪费系统资源。

2:线程等待

Thread.Sleep()需要指定具体的休眠时间,当一个线程需要等待另一个线程执行完成再进行某些操作时,就需要用到Thread.Join()方法。该方法可以实现在两个线程间同步执行,第一个线程会等待另一个线程完成后再继续执行,第一个线程等待时是处于阻塞状态。

示例代码:static void Main()

     {

      Thread t=new Thread(PrintNumber);

      t.Start();

      t.Join();

      WriteLine("线程t执行结束,主线程执行。")

     }

3:终止线程

Thread.Abort()方法可以终止该线程,需要注意的是,使用Abort终止线程时,有可能对程序造成异常从而彻底摧毁应用程序,另外,Abort并不一定总能终止线程,目标线程可以通过处理异常并调用Thread.ResetAbort()方法来拒绝被终止。此时可以优先考虑CancellationToken方法来取消线程的执行。

4:前台线程和后台线程

可以通过Thread对象的IsBackgroud属性来设置线程为前台线程还是后台线程,Thread对象通常默认为前台线程。前台线程和后台线程的主要区别:进程会等待所有的前台线程完成后再结束工作,但是如果只剩下后台线程,则会直接结束工作。如果程序定义了一个不会完成的前台线程,主程序并不会正常结束。

 

posted on 2019-03-13 17:14  南南O北北  阅读(174)  评论(0编辑  收藏  举报