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");
        }
    }
}
相关推荐
Wooden-Flute5 分钟前
五、查询处理和查询优化
服务器·数据库·oracle
苦学编程的谢13 分钟前
Java网络编程API 1
java·开发语言·网络
寒山李白19 分钟前
Java 依赖注入、控制反转与面向切面:面试深度解析
java·开发语言·面试·依赖注入·控制反转·面向切面
casual_clover21 分钟前
Android 之 kotlin语言学习笔记三(Kotlin-Java 互操作)
android·java·kotlin
AA-代码批发V哥24 分钟前
Java正则表达式完全指南
java·正则表达式
还不起来学习?28 分钟前
常见算法题目5 -常见的排序算法
java·算法·排序算法
Java菜鸟、37 分钟前
设计模式(代理设计模式)
java·开发语言·设计模式
Thanwind1 小时前
JVM中的各类引用
java·jvm·jmm
汪小白JIY1 小时前
【C#】异步和多线程
c#·thread·async·task·threapool
RainbowJie11 小时前
从零到一:Maven 快速入门教程
java·maven