在Java并发编程中,Semaphore限制并发数量怎么用?

假设你有一个数据库连接池,其中有10个连接,但是同时最多只能有3个线程在使用它们。那么,你可以使用Semaphore来限制并发线程的数量。

首先,在初始化数据库连接池时,你可以创建一个Semaphore对象并将许可证数设置为3:

Semaphore semaphore = new Semaphore(3);

在需要使用数据库连接的时候,线程首先需要获取一个许可证,如果没有可用的许可证,线程将被阻塞等待:

try {
    semaphore.acquire();
    // 获取到许可证,执行数据库操作
    // ...
} catch (InterruptedException e) {
    // 处理异常
} finally {
    // 释放许可证
    semaphore.release();
}

在执行完数据库操作后,线程需要释放许可证,以便其他线程可以使用它:

semaphore.release();

当所有的10个数据库连接都被占用时,Semaphore将阻止其他线程获取许可证,从而限制并发线程的数量,避免过度使用资源。

你可能感兴趣的:(并发,java,数据库,开发语言)