chuanguangwen 2014-07-10 03:53
浏览 1035

ArrayList.Synchronized(new ArrayList()) 安全性高了,速度也高了?

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 多线程竞争读取修改 速度反而比 同步的慢这是什么道理?

  • 写回答

0条回答

    报告相同问题?

    悬赏问题

    • ¥15 oracle集群安装出bug
    • ¥15 关于#python#的问题:自动化测试
    • ¥20 问题请教!vue项目关于Nginx配置nonce安全策略的问题
    • ¥15 教务系统账号被盗号如何追溯设备
    • ¥20 delta降尺度方法,未来数据怎么降尺度
    • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
    • ¥15 再不同版本的系统上,TCP传输速度不一致
    • ¥15 高德地图点聚合中Marker的位置无法实时更新
    • ¥15 DIFY API Endpoint 问题。
    • ¥20 sub地址DHCP问题