public ArrayList al = new ArrayList();
//public ArrayList al = ArrayList.Synchronized(new ArrayList());
public void ThreadT()
{
al.Add(0);
for (int i = 0; i < 40; ++i)
{
Thread td = new Thread(changeA);
td.Start();
}
for (int i = 0; i < 40; ++i)
{
Thread td = new Thread(readA);
td.Start();
}
}
public void readA()
{
while (true)
{
//lock (al.SyncRoot)
//{
Console.WriteLine("==" + al[0]);
//}
}
}
Random rd = new Random();
public void changeA()
{
while (true)
{
//lock(al.SyncRoot)
//{
al[0] = rd.Next(50, 100);
//}
}
}
ArrayList.Synchronized(new ArrayList()); 速度为什么会比new ArrayList();速度快很多
如果new ArrayList(); 加上了lock 锁后,速度就差不多快了。
Synchronized内部是采用lock机制, (多线程同时读取,多线程有序单一修改)
而普通ArrayList 没有采用lock 多线程竞争读取修改 速度反而比 同步的慢这是什么道理?