位置:首頁 > 軟件操作教程 > 編程開發(fā) > Java > 問題詳情

Java 同步代碼塊

提問人:劉旭39發(fā)布時間:2020-11-30

同步代碼塊

Java中使用synchronized關(guān)鍵字來聲明同步代碼塊,也就是所謂的“鎖”,它可以有效地防止多 個線程同時訪問同一個代碼塊而造成的沖突。synchrcmized定義代碼塊格式如下:

synchronized(Object) {

//代碼塊

}

共享代碼塊通常放在synchronized定義的區(qū)域內(nèi),當(dāng)線程訪問這個代碼塊時,首先會檢測這個 代碼塊是否被其他線程“鎖住”了,如果已被“鎖住”,則直到其他線程使用完,鎖被釋放了, 這個代碼塊才可以繼續(xù)被訪問。Ohject類會標(biāo)識出這個對象是否被鎖,與這個類相關(guān)聯(lián)的線程可以 互斥地使用該類對象的鎖。下面看一個使用synchmnizwl關(guān)鍵字聲明同步代碼塊的示例。

//線程安全

public class ThreadSafe implements Runnable { 

private Integer key = 0;

@Override

public void run() { 

synchronized (key){

key++;

System.out.println(((Thread) Thread.current()).getName()+":"+ key);

try {

Thread.sleep(100);

} catch (InterruptedException e) {

}

}

}

public static void main(String[] args) {

ThreadSafe threadSafe = new ThreadSafe(); 

for(int i=0; i<10; i++) {

new Thread(threadSafe, "線程"+ i).start();

}

}

}


繼續(xù)查找其他問題的答案?

相關(guān)視頻回答
回復(fù)(0)
返回頂部