Java的信號量實際上是一個功能完畢的計數器
因此
下面是一個簡單例子
import ncurrent
import ncurrent
import ncurrent
/**
* Java線程
*
* @author leizhimin
*/
public class Test {
public static void main(String[] args) {
MyPool myPool = new MyPool(
//創建線程池
ExecutorService threadPool = Executors
MyThread t
MyThread t
MyThread t
//在線程池中執行任務
threadPool
threadPool
threadPool
//關閉池
threadPool
}
}
/**
* 一個池
*/
class MyPool {
private Semaphore sp; //池相關的信號量
/**
* 池的大小
*
* @param size 池的大小
*/
MyPool(int size) {
this
}
public Semaphore getSp() {
return sp;
}
public void setSp(Semaphore sp) {
this
}
}
class MyThread extends Thread {
private String threadname; //線程的名稱
private MyPool pool; //自定義池
private int x; //申請信號量的大小
MyThread(String threadname
this
this
this
}
public void run() {
try {
//從此信號量獲取給定數目的許可
pool
//todo
System
} catch (InterruptedException e) {
e
} finally {
//釋放給定數目的許可
pool
System
}
}
}
任務B成功獲取了
任務B釋放了
任務A成功獲取了
任務C成功獲取了
任務C釋放了
任務A釋放了
Process finished with exit code
從結果可以看出
本文出自
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26264.html