1.synchronized (同步)
2.object.wait() object.notify() (配合synchronized使用)
3.readwritelock(讀寫鎖)讀寫
讀非阻塞阻塞寫
阻塞阻塞
注:讀操作次數遠大於寫操作,讀寫鎖優勢最大
4.condition (配合lock使用 類似 object.wait)
5.reentrantlock(重入)
reentrantlock 重要方法:
lock():獲得鎖,如果鎖被占用,等待
lockinterruptibly():獲取鎖,單優先響應中斷.(避免死鎖)
trylock():嘗試獲取鎖,成功返回true,否則返回false.(避免死鎖)
trylock(long time,timeunit unit):在給定時間內獲取鎖.(避免死鎖)
unlock():釋放鎖
6.訊號量 semaphore
指定某個資源可以多少個執行緒可以同時訪問 (初始化指定訊號量的准入數)
7.倒計時器 countdownlatch
讓某乙個執行緒等待直到倒計時結束,在開始執行。(初始化指定次數)
8.迴圈柵欄 cyclicbarrier
9.執行緒阻塞 locksupport
彌補了thread.suspend()方法 resume() 在前發生導致執行緒無法繼續執行,wait()相比不需要或許物件鎖
java多執行緒 執行緒八鎖
乙個物件裡面如果有多個synchronized方法,某乙個時刻內,只要乙個執行緒去呼叫其中的乙個synchronized方法了,其它的執行緒都只能等待,換句話說,某乙個時刻內,只能有唯一乙個執行緒去訪問這些synchronized方法鎖的是當前物件this,被鎖定後,其它的執行緒都不能進入到當前物件...
Java多執行緒 鎖物件
前面總結了多個執行緒訪問同乙個物件的同步方法以同步執行,多個執行緒訪問多個物件的同步方法則以非同步方式執行,那如果多個執行緒分別訪問乙個物件中同步方法和非同步方法會如何執行那?demo myobject類 包含了乙個同步方法和乙個非同步方法 public class myobject catch i...
java 多執行緒 synchronized鎖重入
public class service synchronized public void service2 synchronized public void service3 新建乙個服務類 在這裡,沒乙個方法都是加上了鎖的,可重入鎖 的概念是,自己可以再次獲取自己的內部鎖。比如有1條執行緒獲得了...