Lock方法

简介:

 Lock方法的用途。

不使用Lock方法:

namespace ConsoleApplication1

{

    class Program

    {

 

        //static object alock;

        static List<int> l = new List<int>();

        static void Main(string[] args)

        {

            Thread t1 = new Thread(threadwork1);

            Thread t2 = new Thread(threadwork2);

            t1.Start();

            t2.Start();

 

            while (t1.IsAlive || t2.IsAlive)//等待2个线程都运行完毕

            {

                Console.WriteLine("t1 or t2 are still alive");

                Thread.Sleep(0);

            }

 

            for (int i = 0; i < l.Count; i++)

            {

                Console.WriteLine(l[i]);

            }

 

        }

        static void threadwork1()

        {

            for (int i = 0; i < 1000000; i++)

            {

                if (i % 50000 == 0)

                    l.Add(i/1000);

            }

        }

        static void threadwork2()

        {

            for (int i = -1; i > -1000000; i--)

            {

                if (i %50000 == 0)

                    l.Add(i/1000 );

            }

        }

    }

}

输出结果为正负交替。根据cpu运行速度自行调节循环次数。

使用Lock锁的话,则先是正数全部加载完毕,再加载负数。

 

 

















本文转自cnn23711151CTO博客,原文链接:http://blog.51cto.com/cnn237111/510245 ,如需转载请自行联系原作者



相关文章
|
5月前
|
安全 Java
Synchronized和Lock的区别
Synchronized和Lock的区别
60 0
|
4月前
|
安全 Java
synchronized与Lock
synchronized与Lock
|
Java
synchronized和lock的区别
synchronized和lock的区别
79 0
|
12月前
|
Java
lock和synchtonized的区别
lock和synchtonized的区别
|
Java
Lock 和 Synchronized的区别?
本章主要讲解了Lock 和 Synchronized的区别和知识点
46 0
|
Java
synchronized和Lock的区别
synchronized和Lock的区别
65 0
|
安全 Java
Lock和Synchronized的区别
Lock和Synchronized的区别
Lock和Synchronized的区别
锁、C#中Monitor和Lock以及区别
1.Monitor.Enter(object)方法是获取锁,Monitor.Exit(object)方法是释放锁,这就是Monitor最常用的两个方法,当然在使用过程中为了避免获取锁之后因为异常,致锁无法释放,所以需要在try{} catch(){}之后的finally{}结构体中释放锁(Monitor.Exit())。
2586 0
|
Java API