C#基础:使用线程池执行并行任务

一、Demo(同步)

cs 复制代码
using System;
using System.Threading.Tasks;

class Program
{
    static void Main(string[] args)
    {
        // 使用Task.Run(线程池)来创建两个任务并行执行
        Task task1 = Task.Run(() => PrintHello());//运行任务线程1
        Task task2 = Task.Run(() => PrintWorld());//运行任务线程2

        // 确保完成所有任务线程,再执行后面的代码
        Task.WhenAll(task1, task2).Wait();
    }

    // 任务一:每1秒输出 "Hello"
    static void PrintHello()
    {
        while (true)
        {
            Console.WriteLine("Hello");
            Task.Delay(1000).Wait(); // 休眠五秒
        }
    }

    // 任务二:每3秒输出 "World"
    static void PrintWorld()
    {
        while (true)
        {
            Console.WriteLine("World");
            Task.Delay(3000).Wait(); // 休眠六秒
        }
    }
}

二、Demo(异步)

cs 复制代码
using System;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        // 直接调用异步任务,不需要使用 Task.Run()
        Task task1 = PrintHello(); // 异步任务1
        Task task2 = PrintWorld(); // 异步任务2

        // 等待两个异步任务完成
        await Task.WhenAll(task1, task2); // 等待所有任务完成
    }

    // 假设 PrintHello 和 PrintWorld 是异步方法,返回 Task
    static async Task PrintHello()
    {
        // 模拟异步操作(比如网络请求、IO操作等)
        while (true)
        {
            await Task.Delay(1000); // 假设这是一个异步操作
            Console.WriteLine("Hello");
        }
    }

    static async Task PrintWorld()
    {
        while (true)
        {
            // 模拟异步操作
            await Task.Delay(3000); // 假设这是一个异步操作
            Console.WriteLine("World");
        }
    }
}
相关推荐
朱包林19 分钟前
day45-nginx复杂跳转与https
linux·运维·服务器·网络·云计算
孞㐑¥2 小时前
Linux之Socket 编程 UDP
linux·服务器·c++·经验分享·笔记·网络协议·udp
柳鲲鹏3 小时前
WINDOWS最快布署WEB服务器:apache2
服务器·前端·windows
Fireworkitte4 小时前
Apache POI 详解 - Java 操作 Excel/Word/PPT
java·apache·excel
weixin-a153003083164 小时前
【playwright篇】教程(十七)[html元素知识]
java·前端·html
DCTANT4 小时前
【原创】国产化适配-全量迁移MySQL数据到OpenGauss数据库
java·数据库·spring boot·mysql·opengauss
Touper.5 小时前
SpringBoot -- 自动配置原理
java·spring boot·后端
黄雪超5 小时前
JVM——函数式语法糖:如何使用Function、Stream来编写函数式程序?
java·开发语言·jvm
ThetaarSofVenice5 小时前
对象的finalization机制Test
java·开发语言·jvm
lijingguang5 小时前
在C#中根据URL下载文件并保存到本地,可以使用以下方法(推荐使用现代异步方式)
开发语言·c#