此类型的所有公共静态(Visual Basic 中为 Shared)成员对多线程操作而言都是安全的。但不保证任何实例成员是线程安全的。
在MSDN上经常会看到这样一句话。表示如果程序中有n个线程调用这个方法,那么这n个线程都是安全的, 但是实例成员就不能保证了。
比如Math.Max方法,不管有多少个线程调用,都不会出现线程不安全的情况。
列举一个由于多线程引起的数据不安全。
static void Main(string[] args) { Stopwatch watch = new Stopwatch(); watch.Start(); int sum = 0; var t1 = Task.Run(() => { for (int i = 0; i < 3000000; i++) { sum += i; } }); var t2 = Task.Run(() => { for (int i = 3000000; i < 5000000; i++) { sum += i; } }); Task.WaitAll(t1, t2); Console.WriteLine("和:"+ sum); Console.WriteLine("用时:"+watch.ElapsedMilliseconds); }