C# 线程管理(一):多线程创建方式

首先介绍四种多线程创建方法:

// 不带参数
public void process()
{
   Thread.Sleep(1000000);
}

// 带参数
public void processP()
{
    Thread.Sleep(10000);
}

(1):Thread 创建线程

// 不带参数
Thread th = new Thread(process);
th.IsBackground = true;    // 后台启动后,主程序关闭一起关闭。前台程序,主程序关闭仍然执行(默认)
th.Start();

// 带参数
Thread th1 = new Thread(new ParameterizedThreadStart(processP));
th1.Start(1);

(2):Task创建线程

// 没有参数
Task t = new Task(() => { process(); });
t.Start();

// 带参数
Task t = new Task(new Action<object>(processP),9)
t.Start()

// 参数和返回值
// task不能有多参数,只能有一个object参数或没有参数
// 下面string是返回值,object是参数
public string TaskRun(object arg)
{
    return "hello";
}
Task<string> t1 new Task<string>(new Func<object,string>(TaskRun),arrs);

(3):ThreadPool创建线程

ThreadPool.QueueUserWorkItem(process);        // 无参数
ThreadPool.QueueUserWorkItem(processP, null); // 有参数

(4):Parallel创建并行任务:

// 创建顺序执行
ParallelLoopResult result = Parallel.For(0, 10, new ParallelOptions() { MaxDegreeOfParallelism = 10 }, i =>
            {
                Console.WriteLine("迭代次数:{0},任务ID:{1},线程ID:{2}", i, Task.CurrentId, Thread.CurrentThread.ManagedThreadId);
                Thread.Sleep(10);
            });

            Console.WriteLine("是否完成:{0}", result.IsCompleted);
            Console.WriteLine("最低迭代:{0}", result.LowestBreakIteration);

// 数组遍历
string[] data = { "str1", "str2", "str3" };
            ParallelLoopResult result = Parallel.ForEach<string>(data, str =>
              {
                  Console.WriteLine(str);
              });
            Console.WriteLine("是否完成:{0}", result.IsCompleted);
            Console.WriteLine("最低迭代:{0}", result.LowestBreakIteration);

// 多任务制定
Parallel.Invoke(() =>
            {
                Thread.Sleep(100);
                Console.WriteLine("method1");
            }, () =>
            {
                Thread.Sleep(10);
                Console.WriteLine("method2");
            });

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值