本文主要是介绍57.Semaphore信号量,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
用来限制能同时访问共享资源的线程上限。只是适合限制单机线程数量。
@Slf4j
public class SemaphoreDemo {public static void main(String[] args) {Semaphore semaphore = new Semaphore(3);for (int i = 0; i < 10; i++) {new Thread(() -> {try {semaphore.acquire();//获得此信号量log.debug("我是线程"+Thread.currentThread().getName());Thread.sleep(2000);} catch (InterruptedException e) {e.printStackTrace();}finally {semaphore.release();//释放信号量}}).start();}}
}
Semaphore实现简单连接池,对比享元模式下的实现用wait,notify。性能和可读性显然更好。
这篇关于57.Semaphore信号量的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!