Java并发控制:信号量机制问题演示
在Java的并发编程中,信号量(Semaphore)是一种常用的同步工具。它用来管理同时访问某个共享资源的线程数量。
以下是一个简单的信号量机制问题演示:
import java.util.concurrent.CountDownLatch;
public class SemaphoreDemo {
private int semaphoreCount = 5; // 初始化信号量数量
public void signalThread() throws InterruptedException {
CountDownLatch countDown = new CountDownLatch(1);
new Thread(() -> {
try {
// 当信号量计数为0时,等待信号量
countDown.await();
// 当线程获得到信号后,增加信号量的计数
semaphoreCount++;
} catch (InterruptedException e) {
e.printStackTrace();
}
}).start();
// 当信号量计数不为0时,唤醒等待的线程
if (countDown.getCount() != 0) {
countDown.countDown();
}
}
public static void main(String[] args) throws InterruptedException {
SemaphoreDemo demo = new SemaphoreDemo();
demo.signalThread(); // 启动信号线程
Thread.sleep(5000); // 主线程睡眠一段时间
System.out.println("Semaphore count after waiting: " + demo.semaphoreCount); // 确认等待后信号量数量
}
}
在这个例子中,我们创建了一个信号量semaphoreCount
,初始值为5。然后有一个signalThread
,当它运行时,会增加信号量计数。
在main
方法中,主线程先启动信号线程,然后让主线程睡眠一段时间。最后检查等待后信号量的数量。
这个演示展示了如何在Java并发编程中使用信号量机制来控制对共享资源的访问。
还没有评论,来说两句吧...