{
float fBalance;
public synchronized void deposit(float fFees){ fBalance += fFees; }
public synchronized void withdraw(float fFees){ fBalance -= fFees; }
… …
}
從經過線程同步機制定義后的代碼形式可以看出:在對共享資源進行訪問的方法訪問屬性關鍵字(public)后附加同步定義關鍵字 synchronized,使得同步方法在對共享資源訪問的時候,為這些敏感資源附加共享鎖來控制方法執行期間的資源獨占性,實現了應用系統數據資源的一 致性管理和維護。
五、 Java線程的管理
線程的狀態控制
在這里需要明確的是:無論采用繼承Thread類還是實現Runnable接口來實現應用程序的多線程能力,都需要在該類中定義用于完成實際功能的 run方法,這個run方法稱為線程體(Thread Body)。按照線程體在計算機系統內存中的狀態不同,可以將線程分為創建、就緒、運行、睡眠、掛起和死亡等類型。這些線程狀態類型下線程的特征為:
創建狀態:當利用new關鍵字創建線程對象實例后,它僅僅作為一個對象實例存在,JVM沒有為其分配CPU時間片等線程運行資源;
就緒狀態:在處于創建狀態的線程中調用start方法將線程的狀態轉換為就緒狀態。這時,線程已經得到除CPU時間之外的其它系統資源,只等JVM的線程調度器按照線程的優先級對該線程進行調度,從而使該線程擁有能夠獲得CPU時間片的機會。
睡眠狀態:在線程運行過程中可以調用sleep方法并在方法參數中指定線程的睡眠時間將線程狀態轉換為睡眠狀態。這時,該線程在不釋放占用資源的情況下停止運行指定的睡眠時間。時間到達后,線程重新由JVM線程調度器進行調度和管理。
掛起狀態:可以通過調用suspend方法將線程的狀態轉換為掛起狀態。這時,線程將釋放占用的所有資源,由JVM調度轉入臨時存儲空間,直至應用程序調用resume方法恢復線程運行。
死亡狀態:當線程體運行結束或者調用線程對象的stop方法后線程將終止運行,由JVM收回線程占用的資源。
在Java線程類中分別定義了相應的方法,用于在應用程序中對線程狀態進行控制和管理。
線程的調度
文章來源于領測軟件測試網 http://www.kjueaiud.com/