多线程学习-2

使用Thread类创建线程时,需要提供线程的入口。线程入口使程序知道该让这个线程干什么事儿。

1、初始化一个线程的实例:

Thread.Thread(ThreadStart start);

ThreadStart:A System.Threading.ThreadStart delegate that represents the methods to be invoked when this thread begins executing.

在C#中,线程入口是通过ThreadStart代理来提供的,可以把ThreadStart理解为一个函数指针,指向线程要执行的函数,当调用Thread.Start()方法后,线程就开始执行ThreadStart所代表或者指向的函数。

2、方法

(1)、Start()

(2)、Sleep()

(3)、Abort()

(4)、Join():使主线程等待,直到创建的线程结束。

3、前后台线程

所有的线程都依附于主线程。如果所有的前台线程都停止了,那么主线程可以终止,而所有的后台线程都将无条件终止。

后台线程跟前台线程只有一个区别:后台线程不妨碍程序的终止。一旦一个进程所有的前台线程都终止后,CLR将通过调用任何一个存活的后台进程的Abort()方法来彻底终止进程。

4、Thread.ThreadState

(1)、Aborted:线程已停止;

(2)、AbortRequested:线程的Thread.Abort()方法已被调用,但是线程还未停止;

(3)、Background:线程在后台执行,与属性Thread.IsBackground有关;

(4)、Running:线程正在征程运行;

(5)、Stopped:线程已被停止;

(6)、StopRequested:线程正在被要求停止;

(7)、Suspended:线程已经被挂起(此状态下,可以通过调用Resume()方法重新运行);

(8)、SuspendRequested:线程正在要求被挂起,但是未来得及响应;

(9)、Unstarted:未调用Thread.Start()开始线程的运行;

(10)、WaitSleepJoin:线程因调用了Wait(),Sleep()或Join()等方法处于封锁状态;

5、线程优先级

当线程之间争夺CPU时间时,CPU是按照线程的优先级给予服务的。在C#应用程序中,用户可以设定5个不同的优先级,由高到低分别是Highest,AboveNormal,Normal,BelowNormal,Lowest,在创建线程时如果不指定优先级,那么系统默认为ThreadPriority.Normal。

给一个线程指定优先级,我们可以使用如下代码:
//设定优先级为最低
myThread.Priority=ThreadPriority.Lowest;

通过设定线程的优先级,我们可以安排一些相对重要的线程优先执行,例如对用户的响应等等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值