package com.famous.thread.semapore;
import java.util.concurrent.Executor;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Semaphore;
/**
* 信号量 控制
*
* @author mayanli
*
*/
public class SemaporeClient {
/**
*
*/
public static void main(String[] args) {
Semaphore semaphore = new Semaphore(2, true);
ExecutorService service = Executors.newCachedThreadPool();
for (int i = 0; i < 10; i++) {
service.execute(new QueryIndex(semaphore));
}
service.shutdown();
}
}
class QueryIndex implements Runnable {
Semaphore semaphore;
public QueryIndex(Semaphore semaphore) {
this.semaphore = semaphore;
}
@Override
public void run() {
try {
semaphore.acquire();
System.err.println("开始查询lucene索引");
Thread.sleep(300);
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
System.err.println("查询lucene索引结束");
semaphore.release();
}
}
}
转载于:https://my.oschina.net/payzheng/blog/374224