避免多线程冲突

多线程冲突 = 好几个人(线程)同时抢着改同一个数据 → 结果乱套、算错、报错!

using System;
using System.Threading;

class Program
{
static int count = 0;

// 🔥 定义一把锁(钥匙)
// 专门用来保护 count 这个数据
static object lockObj = new object();

static void Main()
{
    Thread t1 = new Thread(AddCount);
    Thread t2 = new Thread(AddCount);

    t1.Start();
    t2.Start();

    t1.Join();
    t2.Join();

    // 加锁后,永远输出 2000
    Console.WriteLine("最终结果:" + count);
}

static void AddCount()
{
    for (int i = 0; i < 1000; i++)
    {
        // 🔥🔥🔥 加锁:只允许一个线程进入执行
        // 谁拿到锁谁进,其他人在门口等
        lock (lockObj)
        {
            // 安全区域:同一时间只有一个人修改 count
            count++;
        }
        // 出了大括号,自动解锁,下一个线程进
    }
}

}

posted @ 2026-04-04 20:46  菜鸟的奋斗军  阅读(3)  评论(0)    收藏  举报