semaphore:訊號量是一種計數器,用來保護乙個或者多個共享資源的訪問。
如果執行緒要訪問乙個共享資源,它必須先獲得訊號量。如果訊號量的內部計數器大於0,訊號量將減1,然後允許訪問這個共享資源。計數器大於0意味著有可以使用的資源,因此執行緒將被允許使用其中的乙個資源。
否則,如果訊號量的計數器等於0,訊號量將會把執行緒置入休眠直至計數器大於0.計數器等於0的時候意味著所有的共享資源已經被其他執行緒使用了,所以需要訪問這個共享資源的執行緒必須等待。
當執行緒使用完某個共享資源時,訊號量必須被釋放,以便其他執行緒能給訪問共享資源。釋放操作將使訊號量的內部計數器增加1。
列子:
public class test1 catch (interruptedexception e) finally
};}.start();}}
}
public final void acquiresharedinterruptibly(int arg)
throws interruptedexception
final int nonfairtryacquireshared(int acquires)
}
private void doacquiresharedinterruptibly(int arg)
throws interruptedexception
}//parkandcheckinterrupt會阻塞執行緒
if (shouldparkafte***iledacquire(p, node) &&
parkandcheckinterrupt())
throw new interruptedexception();
}} finally
}
protected final boolean tryreleaseshared(int releases)
}
其他方法: cem.tryacquire() 會立即返回結果 不會對執行緒進行阻塞。
cem.acquireuninterruptibly(); 被打斷了任然進行等待。
Java中的繼承及this,super的使用
1 區域性 塊 方法 現 作用 用於限制變數的生命週期,及早釋放,提高記憶體利用率 public class codeblock 結果 10 2 構造 塊 類中的成員位置,每次呼叫構造方法執行前,都會先執行構造 塊 作用 可以把多個構造方法中的共同 放到一起,對物件進行初始化 class code ...
Java中wait 與notify 方法的使用
wait notify 方法介紹 1 wait 方法 讓當前執行緒 持有鎖的執行緒 處於等待 阻塞 的狀態,並且釋放它持有的鎖。該執行緒將處於阻塞狀態,直到其它執行緒呼叫notify 或者notifyall 方法喚醒,執行緒進入就緒狀態。2 wait long 讓當前執行緒 持有鎖的執行緒 處於等待...
Java中迴圈語句for與while的使用
for 語句的基本結構如下所示 for 初始化表示式 判斷表示式 遞增 遞減 表示式 初始化表示式 初始化表示式的意義,在於定義迴圈之前變數的值是多少,如果沒有這一項,就不知道該從哪個值開始迴圈。判斷表示式 判斷表示式的作用在於規定迴圈的終點。如果沒有判斷表示式,那麼此迴圈就成了死迴圈。遞增 遞減 ...