Java并发控制:信号量机制问题演示

原创 拼搏现实的明天。 2024-12-09 21:00 129阅读 0赞

在Java的并发编程中,信号量(Semaphore)是一种常用的同步工具。它用来管理同时访问某个共享资源的线程数量。

以下是一个简单的信号量机制问题演示:

  1. import java.util.concurrent.CountDownLatch;
  2. public class SemaphoreDemo {
  3. private int semaphoreCount = 5; // 初始化信号量数量
  4. public void signalThread() throws InterruptedException {
  5. CountDownLatch countDown = new CountDownLatch(1);
  6. new Thread(() -> {
  7. try {
  8. // 当信号量计数为0时,等待信号量
  9. countDown.await();
  10. // 当线程获得到信号后,增加信号量的计数
  11. semaphoreCount++;
  12. } catch (InterruptedException e) {
  13. e.printStackTrace();
  14. }
  15. }).start();
  16. // 当信号量计数不为0时,唤醒等待的线程
  17. if (countDown.getCount() != 0) {
  18. countDown.countDown();
  19. }
  20. }
  21. public static void main(String[] args) throws InterruptedException {
  22. SemaphoreDemo demo = new SemaphoreDemo();
  23. demo.signalThread(); // 启动信号线程
  24. Thread.sleep(5000); // 主线程睡眠一段时间
  25. System.out.println("Semaphore count after waiting: " + demo.semaphoreCount); // 确认等待后信号量数量
  26. }
  27. }

在这个例子中,我们创建了一个信号量semaphoreCount,初始值为5。然后有一个signalThread,当它运行时,会增加信号量计数。

main方法中,主线程先启动信号线程,然后让主线程睡眠一段时间。最后检查等待后信号量的数量。

这个演示展示了如何在Java并发编程中使用信号量机制来控制对共享资源的访问。

文章版权声明:注明蒲公英云原创文章,转载或复制请以超链接形式并注明出处。

发表评论

表情:
评论列表 (有 0 条评论,129人围观)

还没有评论,来说两句吧...

相关阅读

    相关 信号机制

    信号量机制 简介 整形信号量 记录型信号量 总结 之前学习的这些进程互斥的解决方案分别存在哪些问题? 进程互斥的三种硬件实现方式(中断屏