• C#-----创建线程的多种方式


       1.Thread

         Thread创建和控制线程,设置其优先级并获取其状态

    1.1 不带参数

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading;
    
    namespace ConsoleApp5
    {
        class Program
        {
            static void Main(string[] args)
            {
                Thread thread = new Thread(new ThreadStart(CreateThread));
                thread.Name = "线程一";
                thread.IsBackground = true;
                thread.Start();
            }
    
            static void CreateThread()
            {
                for (int i=1;i<=20;i++)
                {
                    Console.WriteLine(Thread.CurrentThread.Name+":"+i);
                }
            }
        }
    }

    1.2 带参ParameterizedThreadStart

     

    using System;
    using System.Threading;
    
    namespace ConsoleApp5
    {
        class Program
        {
            static void Main(string[] args)
            {
                Thread thread = new Thread(new ParameterizedThreadStart(CreateThread));
                thread.IsBackground = true;
                thread.Start("线程二");
                Console.ReadLine();
            }
    
            static void CreateThread(Object threadName)
            {
                Thread.CurrentThread.Name = threadName.ToString();
                for (int i = 1; i <= 20; i++)
                {
                    Console.WriteLine(Thread.CurrentThread.Name + ":" + i);
                }
            }
        }
    }

       2.Task

        Task类的表示单个操作不会返回一个值,通常以异步方式执行

    2.1 直接New创建

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading;
    using System.Threading.Tasks;
    
    namespace ConsoleApp5
    {
        class Program
        {
            static void Main(string[] args)
            {
                Task task = new Task(() =>
                {
                    Console.WriteLine("可以直接写代码,也可以调用方法");
                    CreateTask();
                });
                task.Start();
                Console.ReadLine();
            }
    
            static void CreateTask()
            {
                Thread.CurrentThread.Name = "线程一";
                for (int i = 1; i <= 20; i++)
                {
                    Console.WriteLine(Thread.CurrentThread.Name + ":" + i);
                }
            }
        }
    }

     2.2 使用Factory工厂创建

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading;
    using System.Threading.Tasks;
    
    namespace ConsoleApp5
    {
        class Program
        {
            static void Main(string[] args)
            {
                //Factory提供对用于创建Task的工厂方法的访问
                Task.Factory.StartNew(() =>
                {
                    Console.WriteLine("可以直接写代码,也可以调用方法");
                    CreateTask();
                });
                Console.ReadLine();
            }
    
            static void CreateTask()
            {
                Thread.CurrentThread.Name = "线程一";
                for (int i = 1; i <= 20; i++)
                {
                    Console.WriteLine(Thread.CurrentThread.Name + ":" + i);
                }
            }
        }
    }

     2.3 使用Run方法

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading;
    using System.Threading.Tasks;
    
    namespace ConsoleApp5
    {
        class Program
        {
            static void Main(string[] args)
            {
                //将在线程池上运行的指定工作排队,并返回代表该工作的Task对象
                Task.Run(() =>
                {
                    Console.WriteLine("可以直接写代码,也可以调用方法");
                    CreateTask();
                });
                Console.ReadLine();
            }
    
            static void CreateTask()
            {
                Thread.CurrentThread.Name = "线程一";
                for (int i = 1; i <= 20; i++)
                {
                    Console.WriteLine(Thread.CurrentThread.Name + ":" + i);
                }
            }
        }
    }
  • 相关阅读:
    [Usaco2008 Nov]mixup2 混乱的奶牛
    [Poi2004] 旅行问题
    [洛谷P1278]单词游戏
    redis20
    redis19
    redis18
    OHC Java堆外缓存详解与应用
    SQL优化
    Mysql安装、字符、引擎设置
    大文件下载
  • 原文地址:https://www.cnblogs.com/fengfuwanliu/p/11233345.html
Copyright © 2020-2023  润新知