在Java中,synchronized關(guān)鍵字用于實(shí)現(xiàn)線程之間的同步。它可以用來(lái)修飾方法或代碼塊。
在方法聲明中使用synchronized關(guān)鍵字來(lái)實(shí)現(xiàn)對(duì)整個(gè)方法的同步。只有一個(gè)線程可以進(jìn)入被synchronized修飾的方法,其他線程需要等待。
public synchronized void method() {
// 代碼邏輯
}
使用synchronized關(guān)鍵字來(lái)修飾一段代碼塊,只有一個(gè)線程可以進(jìn)入該代碼塊,其他線程需要等待。
synchronized (object) {
// 代碼邏輯
}
這里的object
可以是任意對(duì)象,但是需要保證不同線程使用的是同一個(gè)對(duì)象。
需要注意的是,synchronized關(guān)鍵字可以實(shí)現(xiàn)線程之間的同步,但是會(huì)引入一定的性能開(kāi)銷(xiāo)。另外,synchronized關(guān)鍵字只能實(shí)現(xiàn)對(duì)同一個(gè)對(duì)象的同步,對(duì)于不同對(duì)象之間的同步需要使用其他機(jī)制,如Lock接口。