标签:blog alt foreach span oct rgs stat 实验 names
lock锁的是地址
而.net有内部机制使得相同的字符串内存地址是相同的(new string)除外
下面上实验代码
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; namespace ConsoleApp5 { class Program { static void Main(string[] args) { List<string> keyList = new List<string> { "key1","key2", "key1", "key1", "key1", "key1", }; keyList.ForEach(u => { ThreadPool.QueueUserWorkItem(s => { test.lockTestByString(u); }); }); Console.Read(); } } public class test { public static void lockTestByString(string key) { lock (key) { Console.WriteLine("上锁2s key="+key); Thread.Sleep(2000); Console.WriteLine("解锁"); } } } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; namespace ConsoleApp5 { class Program { static void Main(string[] args) { List<string> keyList = new List<string> {new string(‘k‘,1), new string(‘k‘, 1), new string(‘k‘, 1), new string(‘k‘, 1) }; keyList.ForEach(u => { ThreadPool.QueueUserWorkItem(s => { test.lockTestByString(u); }); }); Console.Read(); } } public class test { public static void lockTestByString(string key) { lock (key) { Console.WriteLine("上锁2s key="+key); Thread.Sleep(2000); Console.WriteLine("解锁"); } } } }
通过new字符串得出的运行结果
转自:https://www.cnblogs.com/ProDoctor/p/7619847.html
标签:blog alt foreach span oct rgs stat 实验 names
原文地址:https://www.cnblogs.com/hnsongbiao/p/8926086.html