多執行緒對各種變數共享(經典)

2021-08-21 10:24:48 字數 640 閱讀 6238

靜態方法(static method)與靜態成員變數一樣,屬於類本身,在類裝載的時候被裝載到記憶體(memory),不自動進行銷毀,會一直存在於記憶體中,直到jvm關閉。

非靜態方法

non-static method)又叫例項化方法,屬於例項物件,例項化後才會分配記憶體,必須通過類的例項來引用。不會常駐記憶體,當例項物件被jvm **之後,也跟著消失。

靜態變數:

執行緒非安全。

靜態變數即類變數

,位於方法區,為所有該類下的物件共享

,共享乙份記憶體,一旦靜態變數被修改,其他物件均對修改可見,故執行緒非安全。

例項變數:

單例模式(只有乙個

物件例項

存在)執行緒非安全,非單例執行緒安全。

例項變數為物件例項私有,在虛擬機器的堆中分配,若在系統中只存在乙個此物件的例項,在多執行緒環境下,「猶如」靜態變數那樣,被某個執行緒修改後,其他執行緒對修改均可見,故執行緒非安全;如果每個執行緒執行都是在

不同的物件中,那物件與物件之間的例項變數的修改將互不影響

,故執行緒安全。

區域性變數:

執行緒安全。

每個執行緒執行時將會把區域性變數放在各自棧幀的工作記憶體中,

執行緒間不共享

多執行緒共享變數 多執行緒共享全域性變數

1.多執行緒的執行順序是無序的 像2個人賽跑,乙個先跑乙個後跑,但根據每個人跑的速度不一樣,跑一半,二者可能跑在一起去了。2.又因為多執行緒是共享乙個全域性變數的,就導致資料容易被弄髒 假如老闆讓兩個員工寫兩個主題ppt,若這兩個人沒商量好,都做了同乙個主題的ppt,導致不但速度很慢,且這個ppt有...

多執行緒共享變數

題目如下 設計4個執行緒,其中兩個執行緒每次對j增加1,另外兩個執行緒對j每次減少1。如果每個執行緒執行的 相同 可以使用同乙個runnable物件,這樣在不同的執行緒中只需要把這個runnable物件傳到裡面去即可,因為runnable物件的run方法天熱原子性,不可能run方法被打斷,乙個run...

多執行緒共享變數

from threading import thread,lock global num 0 def func1 global global num 全域性變數 for i in range 1000000 lock.acquire 兩個執行緒會最開始搶這個鎖,拿到鎖就會處於關鎖,執行後面的程式,其...