C#学习之路-线程(二)

将之前的第一部分没写到的补充一下,具体例子以后会写。



Thread类,该类允许创建前台线程,以及设置线程的优先级。使用Thread类可以创建和控制多线程。
lamdba表达式还可以与Thread类一起使用,将线程的实现代码传送给Thread构造参数。
如果多个前台线程在运行,而Main()方法结束了,应用程序的进程就仍然是激活的,直到所有前台线程完成任务为止。
在默认情况下,用Thread类创建的线程是前台的,而程序池中的线程是后台的。
再用Thread类创建线程时,可以设置IsBackground属性,来确定该线程是前台的还是后台的线程。
线程由操作系统调度,给线程指定优先级,就可以影响调度顺序。
在调用Start()方法后,新线程仍不失处于running状态,而是出于UnStarted状态,只有操作系统调用线程以后,才会是Running状态,读取Thread.TreadState属性,就可以获得当前线程的运行状态。
Lock语句是设置锁定和解除锁定的一种简单方式,在添加lock语句之前,先进入一个争用条件。
Interlocked类用于使变量的简单语句原子化。提供了以线程安全的方式递增、递减、交换和读取值。
lock(this){return state++} ==return Interlocked.Increment(ref state);
对于同步,Barrier类非常适用于其中工作有多个任务分支并且以后有需要合并的工作。它用于需要同步的参与者。激活一个任务时就动态的添加了其他参与者。
Monitor类的主要优点是:可以添加一个等待被锁定的超时值。这样就不会无限期的等待被锁定。
如果有大量的锁定,且锁定的时间总是非常短,可以使用SpinLock。
WaitHandle是一个抽象的基类,用于等待一个信号的设置。可以等待不同的信号。
Timer类用于在某个时间间隔后调用某个方法。

 public static void Thread()
        {
            var t = new Thread(first);
            t.Start();
        }


        public static  void first()
        {
            Console.WriteLine("第一个");
        }

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值