C# Thread 相关 笔记

本文深入探讨C#线程Join函数的原理及其应用,通过实例演示如何利用Join确保线程同步执行,同时介绍了线程的Background属性、优先级设置和ThreadStatic与ThreadLocal的区别。此外,文章还涵盖了线程池的基础概念,为读者提供全面的线程管理知识。

Join

class MyApplication
    {
        public static void Main()
        {
            Thread t = new Thread(new ThreadStart(() =>
              {
                  Console.WriteLine("aaaa");
              }));
            t.Start();
            //t.Join();
            Console.WriteLine("main");
        }
    }

只用t.Start(),t并不会立即开始
如下:
这里写图片描述
先出现“main“才出现的”aaaa“

加上t.Join(),线程会立即开始;
这里写图片描述

Join函数的作用是暂停其他线程,调用线程执行完毕后再执行其他线程。
就是将其他线程的ThreadState属性设置为WaitSleepJoin状态。
等价于对其他线程执行Sleep()函数。


可以在定义新线程时设置属性

Thread t = new Thread(new ThreadStart(() =>
              {
                  Console.WriteLine("aaaa");
              }))
            { Name = "thread", IsBackground = true };

Background属性:如果是true,在完成前会阻止程序退出。false则不会,不论是否执行完毕,只要不是后台的线程执行完了就直接退出了。

在属性中还可以设置优先级,即Priority:
这里写图片描述
在给高优先级是要小心,可能会降低其他线程的运行效率。

标记为ThreadStatic的字段不会在线程间共享。

[ThreadStatic] 
public static int i;

这里写图片描述

ThreadLoacl< T >
在每个线程里都可以不一样,返回的是当前线程的信息。
这里写图片描述

Thread Pools
线程池,可以在任何时间创建,当线程完成时销毁。
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cccccc1212

这是c币不是人民币,不要充值

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值