Java 關鍵字 synchronized 總結

2021-08-13 08:36:51 字數 1268 閱讀 6616

#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基本資料型別之一,...