多執行緒之synchronized(this)

2021-07-24 02:24:14 字數 1224 閱讀 2049

使用情景:我們有時候會使用多執行緒但是我們需要在呼叫某乙個例項的時候,我們需要有序,比如,賣火車票的時候,我們要先判斷是否有票,然後再**票,當多個視窗賣火車票的時候,票池就會出錯。會出現一張票被多個售票視窗重複**。

使用方法:我們可以使用synchronized(this)來給票池枷鎖,保證買票的時候,只能有乙個售票員控制一張票。

實驗**:

package thread;

public class synchronizedcode implements runnable

public void run() catch (exception e)

} }public static void main(string args)

}

實驗結果:

這是第乙個2000

這是第乙個1000

-------1000

-------2000

上面是因為我們使用了不同物件所以出現這樣的實驗結果。

當我們使用同乙個物件的時候,實驗**如下:

package thread;

public class synchronizedcode implements runnable

public void run() catch (exception e)

} }public static void main(string args)

}

實驗結果如下:

這是第乙個2000

-------2000

這是第乙個2000

-------2000

當我們不使用synchronized的時候,實驗**如下:

package thread;

public class synchronizedcode implements runnable

public void run() catch (exception e)

// }

} public static void main(string args)

}

實驗結果如下:

這是第乙個2000

這是第乙個2000

-------2000

-------2000

多執行緒同步 synchronize

在專案中我們經常遇到這樣一種情況 兩個人同時運算元據庫,導致資料異常。針對於資料庫級別我們採用鎖機制,還有一種方法使規定我們方法呼叫的許可權,當你在使用這個資源的時候別人是不允許使用的,在多執行緒中只需要乙個修飾詞就可以實現 synchronize。第一步 下面我們採用銀行取錢的場景來 實現 acc...

Java 多執行緒同步 synchronized

在多執行緒程式設計環境下,對於共享資源 比如多執行緒共享的變數 的寫操作時,不同執行緒之間假如沒有相互同步,而是隨機讀取 更改變數回寫到記憶體中,就會出現混亂和錯誤!因此必須要在多執行緒的操作方法上新增鎖物件,當乙個執行緒進入操作的時候,其它執行緒必須要等待,這樣依次序列完成任務。synchroni...

多執行緒 Synchronize實現原理

前言 synchronize實現實現同步最常用的方式,但是它的底層實現呢?如何實現 通過synchronize修飾的 塊,執行緒訪問需要申請鎖才能訪問,但是當乙個物件的鎖已經被乙個執行緒拿到了,其他執行緒就拿不到這個物件的鎖,必須進入等待阻塞的狀態。monitor物件,在同步 塊的開始會引入moni...