多執行緒中,區域性變數與全域性變數哪個比較安全?

ii_chengzi發表於2018-11-18

區域性變數是在堆疊中執行。每個執行的執行緒都有自己的堆疊。

別的執行緒無法訪問得到,因此我們說,區域性變數是“安全”的。

全域性變數在堆中,堆是對所有的執行緒都可見的。

因此在兩個以上的執行緒訪問全域性變數時,就會出現所謂的

“不安全”,a執行緒訪問全域性變數,賦值為a,然後中間睡眠了0.001秒,在此期間b程式訪問了全域性變數,賦值為b了,此時a執行緒醒來了,搶了處理機,發現全域性變數是b,顯然不是我們a執行緒所要到的值,這時就要加入同步機制或者定義為區域性變數,比如如果是方法的話就加同步方法,程式碼塊就加同步程式碼塊。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31543790/viewspace-2220503/,如需轉載,請註明出處,否則將追究法律責任。

相關文章