package cn.chen.synchronizefunction;
/*多執行緒:乙個程序中有多個執行緒可以同時執行任務。
多執行緒的好處:
1.解決乙個程序中可以同時執行多個任務的問題
2.提高資源利用率
多執行緒的弊端:
1.增加了cpu的負擔
2.降低了程序中線程的執行概率
3.出現執行緒安全問題
4.引發死鎖現象
自定義執行緒的實現方式:
方式一:
1.自定義乙個類繼承thread類。
2.重寫thread類的run方法,把自定義執行緒的**寫再run方法上。
3.建立thread的子類物件,並呼叫start方法啟動執行緒。
注意:1.不可直接呼叫run方法,否則就相當於直接呼叫基本方法。
執行緒安全問題解決方法:
方式一:同步**塊:
同步**塊的格式:
synchronize(鎖物件)
方式二:同步函式:同步函式就是使用synchronized修飾乙個函式.
同步函式注意事項:
1.如果乙個非靜態的同步函式的(鎖 --物件)是this物件,如果是靜態的同步函式(鎖---物件)是當前函式所屬的類位元組碼檔案(類.class)
2.同步函式的鎖物件是固定的,不能由你來指定的
1.同步**塊的鎖物件可以由我們自己隨意指定,同步函式是固定的,不能由我們來指定。
2.同步**塊可以很方便控制需要被同步**的範圍,同步函式必須是整個函式的所有**全部被同步了。
案例:乙個銀行賬戶5000,兩夫妻一人乙個卡,取錢一次只能取出1000,要求執行緒安全。
* */
class bankthread extends thread
@override
public void run()
//靜態函式
public static synchronized void getmoney()else
} } }
public class demo
}
多執行緒回顧 執行緒同步RLock,Lock
import threading from threading import lock,rlock 可重入的鎖 全域性直譯器鎖 gil 非常影響效能,死鎖 lock不能同時兩個acquire 呼叫使用鎖的其他函式 rlock 在乙個執行緒中,可以連續多次呼叫acquire,但注意release次數要...
多執行緒 同步函式
來看下面這個程式 需求 銀行有一金庫。有兩個儲戶分別存300元,每次存100,存3次。目的 該程式是否有安全問題。如果有,如何解決?class bank class cus implements runnable class bankdemo 執行結果可能為 如何找問題 1.明確哪些 是多執行緒執行...
執行緒同步和執行緒安全
執行緒同步,嚴格來說,是程式通過專用的機制來保證多個並行執行的執行緒在同一時刻不會執行指定的程式段。的執行緒安全,指的是多執行緒以安全執行的方式操作共享資料結構。或者簡單的說,就是程式在多執行緒環境下執行而不會引發資料錯誤。有多種策略實現執行緒安全的資料結構。執行緒同步是現實執行緒安全的一種手段。不...