Semaphore信號量
阿新 • • 發佈:2018-05-03
@override map exce str ret println 信號量 static for
限制並發資源的並發訪問數量。 samephore.acquire(); 獲取許可 samephore.release(); 釋放一個許可。
public class SemaphoreTest implements Runnable { Semaphore samephore; int id; public SemaphoreTest(Semaphore samephore, int id) { this.samephore = samephore; this.id = id; } @Overridepublic void run() { // TODO Auto-generated method stub try { samephore.acquire(); Thread.sleep(1000); System.out.println("客戶編號" + id + "正在辦理任務"); samephore.release(); } catch (InterruptedException e) { // TODO Auto-generated catch blocke.printStackTrace(); } } public static void main(String[] args) { Semaphore samephore = new Semaphore(10,true);// 限制並發訪問次數為10 true為采用公平模式。先進的先遍歷 for (int i = 0; i < 20; i++) { new Thread(new SemaphoreTest(samephore, i)).start();; } } }
模擬銀行10個辦理任務的窗口。 samephore.acquire() 如果有10個任務獲取許可並沒有釋放 其他人等待 某一個獲取許可正在執行的任務 釋放許可才能進入
Semaphore信號量