靜態方法(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 兩個執行緒會最開始搶這個鎖,拿到鎖就會處於關鎖,執行後面的程式,其...