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

Java 同步代碼塊

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

同步代碼塊

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

synchronized(Object) {

//代碼塊

}

共享代碼塊通常放在synchronized定義的區(qū)域內(nèi),當(dāng)線程訪問這個(gè)代碼塊時(shí),首先會(huì)檢測這個(gè) 代碼塊是否被其他線程“鎖住”了,如果已被“鎖住”,則直到其他線程使用完,鎖被釋放了, 這個(gè)代碼塊才可以繼續(xù)被訪問。Ohject類會(huì)標(biāo)識出這個(gè)對象是否被鎖,與這個(gè)類相關(guān)聯(lián)的線程可以 互斥地使用該類對象的鎖。下面看一個(gè)使用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)
返回頂部