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");
        }
    }
}
相关推荐
Halo_tjn几秒前
基于Java的相关知识点
java·开发语言·windows·python·算法
Cosolar2 分钟前
Java 后端访问 https接口报 SSLHandshakeException 你遇到过吗
java·后端·面试
组合缺一3 分钟前
带来 AI Agent 开发,OpenSolon v3.8.3 发布
java·人工智能·ai·langchain·llm·solon
ghostmen3 分钟前
SpringBoot + Vue 实现 Python 在线调试器 - 技术方案文档
java·python·vue·springboot
阿蒙Amon5 分钟前
C#每日面试题-简述匿名方法
java·面试·c#
山峰哥9 分钟前
JOIN - 多表关联的魔法——3000字实战指南
java·大数据·开发语言·数据库·sql·编辑器
波波0079 分钟前
C# 中静态类的正确与错误用法
c#
阿蒙Amon10 分钟前
C#每日面试题-简述匿名类型
开发语言·c#
jghhh0110 分钟前
C#中实现不同进程(EXE)间通信的方案
java·单例模式·c#
Mr.朱鹏11 分钟前
Spring Boot 配置文件加载顺序与优先级详解
java·spring boot·后端·spring·maven·配置文件·yml