猿问

多线程的问题?

 private void test(object obj)
        {
            lock (obj)
            {
                RobotLog.SysLog(obj.ToString() + "开始执行", true);
                System.Threading.Thread.Sleep(1000 * 2);
                RobotLog.SysLog(obj.ToString() + "结束执行", true);
 
            }
           
        }

 

我有一个对象,里面有一个定时器,我有多少个实例就有多少个定时器,第一次使用多线程想请教下,上面的代码有问题吗?  还有我多个定时器操作一个泛型集合并且有一个定时器读取这个集合我怎样保证集合的同步?谢谢了


有只小跳蛙
浏览 402回答 2
2回答

萧十郎

有问题,你这和没lock一样

绝地无双

多个定时器同步lock就没什么问题了主要是lock (obj),obj是一个参数,最好是lock一个外界不能改变的对象,这样有问题。这样最好:object obj=new object();lock(obj)还有lock里面你还写sleep,那是什么意思
随时随地看视频慕课网APP
我要回答