多线程
如何控制某个方法允许并发访问线程的数量?
// 创建一个信号量,允许最多3个线程同时访问
private final Semaphore semaphore = new Semaphore(3);
// 2. 10个线程同时运行
for (int i= 0; i < 10; i++) {
new Thread(() -> {
try {
// 3.获取许可,计数-1
semaphore.acquire();
} catch (InterruptedException e) {
e.printStackTrace();
}
try {
System.out.println("running...");
try {
Thread,sleep( millis: 1000);
} catch (InterruptedException e){
e.printStackTrace();
}
System.out.println("end...");
} finally {
// 4.释放许可计数+1
semaphore.release();
}
}).start();
}
在多线程中提供了一个工具类Semaphore(赛莫佛),信号量。在并发的情况下,可以控制方法的访问量 1. 创建Semaphore对象,可以给一个容量 2. acquire()可以请求一个信号量,这时候的信号量个数-1 3. release()释放一个信号量,此时信号量个数+1