#android 學習計畫#
#第一周#
同一程序的多個執行緒共享同一片儲存空間,因此當多個執行緒同時訪問同乙個資料時,會造成訪問衝突。
public
synchronized
void
start()
public
static
synchronized
void
start()
// 普通函式
public
void
start()
}
// 靜態函式
public
static
void
start()
}
其中,第一段**與第三段**等價,第二段**與第四段**等價。
在乙個執行緒訪問 synchronized 函式/**段,拿到該物件/類的鎖後,在該函式/**段執行完之前,其他執行緒訪問相同的物件/類中的 synchronized 函式/**段(不一定是相同的函式/**段),會進入阻塞狀態,直到前乙個執行緒執行完函式/**段為止,從而實現執行緒同步。
下面分6種情況說明該問題:
a a1 = new a();
thread1
a1.a();
thread2
a1.a();
a a1 = new a();
a a2 = new a();
thread1
a1.a();
thread2
a2.a();
a a1 = new a();
thread1
a1.a();
thread2
a1.b();
thread1
a.a();
thread2
a.a();
thread1
a.a();
thread2
a.b();
a a1 = new a();
thread1
a1.a();
thread2
a.b();
synchronized 修飾**塊,根據**塊所處函式型別的不同,可以在上述6種情況中找到等價的情況。 static關鍵字 java關鍵字
先按照宣告順序初始化基類靜態變數和靜態 塊,接著按照宣告順序初始化子類靜態變數和靜態 塊,而後按照宣告順序初始化基類普通變數和普通 塊,然後執行基類建構函式,接著按照宣告順序初始化子類普通變數和普通 塊,最後執行子類建構函式。import static com.test.test1.fu.say i...
Java的關鍵字
一 原始資料型別 byte short int long float double char boolean 二 迴圈關鍵字 do while for break continue 三 分支關鍵字 if else switch case default break 四 方法,變數和類修飾符 priv...
java關鍵字大全
abstract表明類或者成員方法具有的抽象屬性 assert用來進行程式測試 boolean基本資料型別之一,布林型 break提前跳出乙個塊 byte基本資料型別之一,位元組型 case用在switch語句中,表明其中的乙個分支 catch用在異常處理中,用來捕捉異常 char基本資料型別之一,...