c# 多线程demo

using System;
using System.Threading;
using System.Threading.Tasks;

class MultiThreadingDemo
{
    static void Main(string[] args)
    {
        Console.WriteLine("主线程开始... (ID: " + Thread.CurrentThread.ManagedThreadId + ")");
        
        // 1. 使用Thread类创建线程
        Thread thread1 = new Thread(DoWork);
        thread1.Name = "工作线程1";
        thread1.Start();
        
        Thread thread2 = new Thread(new ParameterizedThreadStart(DoWorkWithParameter));
        thread2.Name = "工作线程2";
        thread2.Start(5); // 传递参数
        
        // 2. 使用线程池
        ThreadPool.QueueUserWorkItem(DoWorkWithParameter, "来自线程池的任务");
        
        // 3. 使用Task (推荐方式)
        Task task1 = Task.Run(() => 
        {
            Console.WriteLine("Task 1 开始 (ID: " + Thread.CurrentThread.ManagedThreadId + ")");
            Thread.Sleep(1500);
            Console.WriteLine("Task 1 完成");
        });
        
        Task task2 = Task.Run(() => 
        {
            Console.WriteLine("Task 2 开始计算 (ID: " + Thread.CurrentThread.ManagedThreadId + ")");
            Thread.Sleep(1000);
            return 42;
        });
        
        // 等待任务完成并获取结果
        task2.ContinueWith(t => 
        {
            Console.WriteLine("Task 2 的结果是: " + t.Result);
        });
        
        // 并行执行多个任务
        Parallel.Invoke(
            () => {
                Console.WriteLine("并行任务1 (ID: " + Thread.CurrentThread.ManagedThreadId + ")");
                Thread.Sleep(800);
            },
            () => {
                Console.WriteLine("并行任务2 (ID: " + Thread.CurrentThread.ManagedThreadId + ")");
                Thread.Sleep(600);
            },
            () => {
                Console.WriteLine("并行任务3 (ID: " + Thread.CurrentThread.ManagedThreadId + ")");
                Thread.Sleep(400);
            }
        );
        
        // 等待所有线程完成(在实际应用中可能需要更复杂的同步机制)
        thread1.Join();
        thread2.Join();
        task1.Wait();
        
        Console.WriteLine("主线程结束。");
    }
    
    static void DoWork()
    {
        Console.WriteLine(Thread.CurrentThread.Name + " 开始工作 (ID: " + Thread.CurrentThread.ManagedThreadId + ")");
        Thread.Sleep(2000); // 模拟工作
        Console.WriteLine(Thread.CurrentThread.Name + " 工作完成");
    }
    
    static void DoWorkWithParameter(object data)
    {
        Console.WriteLine(Thread.CurrentThread.Name + " 开始处理参数: " + data + " (ID: " + Thread.CurrentThread.ManagedThreadId + ")");
        Thread.Sleep(1000); // 模拟工作
        Console.WriteLine(Thread.CurrentThread.Name + " 处理完成");
    }
}

你可能感兴趣的:(c#,开发语言)