Java提供了三種實現同步機制的方法:
(1)synchronized 關鍵字
Java語言中,每個對象都有一個對象鎖與之關聯,該鎖表明對象在任何時候只允許被一個線程所擁有,當一個線程調用一段synchronized代碼時,需要先獲取這個鎖,然後去執行相應的代碼,執行結束,釋放鎖。
①synchronized 方法
在方法生命前加上synchronized關鍵字修飾。當一個方法的方法體比較大時,爲提高程序的效率,可以使用synchronized塊。
②synchronized 塊
語法:
synchronized ( syncObject){
//訪問syncObject的代碼;
}
(2)wait() 和 notify() 方法
(3)Lock
①lock():以阻塞方式獲得鎖
②tryLock():以非阻塞方式獲取鎖,嘗試性獲取一次,返回true/false。
③tryLock(long timeout, TimeUnit unit):設定等待時間獲取鎖,超市返回false。
④lockInterruptibly():