多线程Thread(线程工具API ,创建多线程)

1.线程工具API 

1.获取线程id

private static int GetThreadId()
        {
            return Thread.CurrentThread.ManagedThreadId;
        }

2.线程状态,是否激活,是否还后台线程(分线程中拿当前分线程,通过Thread.CurrentThread)

 //1.实例化线程
 Thread thread = new Thread(() =>
 {
  Console.WriteLine("线程1");

 //b.分线程中拿当前分线程,通过Thread.CurrentThread
 Console.WriteLine("当前线程名字:" + Thread.CurrentThread.Name);
 Console.WriteLine("多线程thread的状态:" + Thread.CurrentThread.ThreadState);
 Console.WriteLine("多线程thread是否激活:"+Thread.CurrentThread.IsAlive);
 Console.WriteLine("多线程thread是否是后台线程:" + Thread.CurrentThread.IsBackground);
 thread1.Name = "Test";
            });

3.实例化线程是不会主动启动,一点要记得启动线程

1.创建多线程

1.1 使用lamba表达式创建多线程

 static void Main(string[] args)
        {
            Console.WriteLine($"我是主线程;{GetThreadId()}");
            Test();
            Console.WriteLine("主线程结束");
            Console.ReadLine();
        }
        //创建一个新线程:使用lambda表达式
        public static void Test()
        {
            //创建一个新线程:使用lambda表达式
            //主线程创建新线程以后,会直接执行后面的 Console.WriteLine("主线程结束");
            Thread thread1 = new Thread(() =>
            {
                Console.WriteLine($"我是Test线程;{GetThreadId()}");
            });
            thread1.Name = "Test";
            thread1.Start();
        }

 

 1.2创建无参数的入口线程(相当于lamba表达式创建多线程)

 static void Main(string[] args)
        {
            Console.WriteLine($"我是主线程;{GetThreadId()}");
            //Test();
            Test2();
            Console.WriteLine("主线程结束");
            Console.ReadLine();
        }
//创建无参数入口线程
        public static void Test2()
        {
            Thread thread2 = new Thread(TestPrint);
            thread2.Start();
        }
        //供线程2调用的方法
        public static void TestPrint()
        {
            Console.WriteLine("我是Test2线程:"+GetThreadId());
        }

 

1.3创建有参数的线程:new Thread(new ParameterizedThreadStart(TestPrint3))

参数类型要用object类型;传参在线程启动中传参

//创建有参数入口线程
        public static void Test3()
        {
            Thread thread3 = new Thread(new ParameterizedThreadStart(TestPrint3));
            thread3.Start("实际参数");
        }
        //供线程3调用的方法
        public static void TestPrint3(object str)
        {
            Console.WriteLine($"我是Test2线程:{str}" + GetThreadId());
        }

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

薄荷撞~可乐

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值