局部變量是在堆棧中運行。每個運行的線程都有自己的堆棧。
別的線程無法訪問得到,因此我們說,局部變量是“安全”的。
全局變量在堆中,堆是對所有的線程都可見的。
因此在兩個以上的線程訪問全局變量時,就會出現所謂的
“不安全”,a線程訪問全局變量,賦值為a,然后中間睡眠了0.001秒,在此期間b進程訪問了全局變量,賦值為b了,此時a線程醒來了,搶了處理機,發現全局變量是b,顯然不是我們a線程所要到的值,這時就要加入同步機制或者定義為局部變量,比如如果是方法的話就加同步方法,代碼塊就加同步代碼塊。
局部變量是在堆棧中運行。每個運行的線程都有自己的堆棧。
別的線程無法訪問得到,因此我們說,局部變量是“安全”的。
全局變量在堆中,堆是對所有的線程都可見的。
因此在兩個以上的線程訪問全局變量時,就會出現所謂的
“不安全”,a線程訪問全局變量,賦值為a,然后中間睡眠了0.001秒,在此期間b進程訪問了全局變量,賦值為b了,此時a線程醒來了,搶了處理機,發現全局變量是b,顯然不是我們a線程所要到的值,這時就要加入同步機制或者定義為局部變量,比如如果是方法的話就加同步方法,代碼塊就加同步代碼塊。
本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。