在多線程中使用靜態方法是否有安全執行緒問題

來源:互聯網
上載者:User

    類的成員分為兩類,靜態成員(static member)和執行個體成員(instance member)。靜態成員屬於類,執行個體成員則屬於對象,即類的執行個體。

    簡單討論一下在一個類中使用靜態欄位(static field)和靜態方法(static method)是否會有安全執行緒問題。 

    我們在知道, 靜態欄位(static field)和靜態方法(static method)的調用是通過類來調用。靜態方法不對特定的執行個體操作,只能訪問靜態成員。執行個體方法可對特定的執行個體操作,既能訪問靜態成員,也能訪問執行個體成員。

    那麼,在多線程中使用靜態方法是否有安全執行緒問題?這要看靜態方法是是引起安全執行緒問題要看在靜態方法中是否使用了靜態成員。

    因為,在多線程中使用同一個靜態方法時,每個線程使用各自的執行個體欄位(instance field)的副本,而共用一個靜態欄位(static field)。所以說,如果該靜態方法不去操作一個靜態成員,只在方法內部使用執行個體欄位(instance field),不會引起安全性問題。但是,如果該靜態方法操作了一個靜態欄位,則需要靜態方法中採用互斥訪問的方式進行安全處理。
   
    舉個簡單的例子,我們使用的Console.WriteLine();中WriteLine()是Console.WriteLine類的靜態方法。

     對於ASP.NET, 多個Client Access Server端, 這是一個多線程的例子.只要理解了原因,我們可以在三層架構中的資料訪問層中放心使用靜態方法(static method)來訪問資料庫.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.