2014-12-07 28 views
1

爲什麼我們需要private obj?或任何類型的對象?鎖定參數的目的是什麼?爲什麼我們使用帶有鎖定語句的私有對象?

 private static object obj = new object(); 
     static void Print() { 
      lock (obj) 
      { 
       Console.WriteLine("Start"); 
       Thread.Sleep(100); 
       Console.WriteLine("End"); 
      } 
     } 

以及如何使用這段代碼?

+0

因爲否則類外的代碼可能會釋放鎖? – rene 2014-12-07 11:43:25

回答

2

爲什麼我們需要private obj

它實際上並不是私密的,代碼和公共對象一樣工作。你可以鎖定任何對象。

但是,儘可能隱藏鎖對象並使其可以訪問實際需要的代碼是最佳做法。這有助於防止死鎖。

+0

更確切的說:這種方式避免了(反射之外)外部對象對鎖對象的濫用 - 這可能導致死鎖。 – TomTom 2014-12-07 11:48:57

相關問題