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");
        }
    }
}
相关推荐
wanhengidc5 分钟前
云手机 数字生活中新的可能
运维·服务器·科技·安全·智能手机·生活
小码编匠16 分钟前
C# 实现网络文件传输:打造稳定可靠的工业级工具
后端·c#·.net
香吧香16 分钟前
Spring boot 中 CommandLineRunner 在服务启动完成后自定义执行
java·spring boot·spring cloud
浓墨染彩霞21 分钟前
Java-----多线路
java·经验分享·笔记
清晓粼溪22 分钟前
SpringMVC02:扩展知识
java·后端·spring
曹牧24 分钟前
Java String[] 数组的 contains
java·开发语言·windows
qq_124987075328 分钟前
基于springboot+vue+mysql的校园博客系统(源码+论文+部署+安装)
java·vue.js·spring boot·mysql·毕业设计
魂梦翩跹如雨30 分钟前
P8752 [蓝桥杯 2021 省 B2] 特殊年份——Java解答
java·蓝桥杯
谷哥的小弟33 分钟前
Spring Framework源码解析——Ordere
java·后端·spring·源码
浩瀚地学38 分钟前
【Java】String
java·开发语言·经验分享·笔记·学习