semaphore例子

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();
		}

	}
}


你可能感兴趣的:(semaphore例子)