您当前的位置: 首页 >  Java

小志的博客

暂无认证

  • 0浏览

    0关注

    1217博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Java并发多线程编程——Semaphore

小志的博客 发布时间:2022-01-06 21:37:44 ,浏览量:0

目录
    • 一、Semaphore概述
    • 二、Semaphore代码示例

一、Semaphore概述
  • Semaphore的字面意思是信号量。
  • Semaphore主要用于两个目的: (1)、一个是用于多个共享资源的相互排斥使用。 (2)、另一个用于并发资源数的控制.。
二、Semaphore代码示例

模拟有限个车位,多个车辆抢车位案例。

  • 代码

    import java.util.concurrent.Semaphore;
    import java.util.concurrent.TimeUnit;
    
    /**
     * @description: 抢车位案例
     * @author: xz
     */
    public class SemaphoreDemo {
        public static void main(String[] args) {
            robCar();
        }
    
        private static void robCar(){
            //模拟5个停车位
            Semaphore semaphore = new Semaphore(5);
            for (int i = 1; i {
                    try {
                        semaphore.acquire();//抢到资源
    
                        System.out.println("线程:"+Thread.currentThread().getName() + "\t抢到车位");
                        try {
                            TimeUnit.SECONDS.sleep(3);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                        System.out.println("线程:"+Thread.currentThread().getName() + "\t 停3秒离开车位");
    
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    } finally {
                        semaphore.release();//释放资源
                    }
                },String.valueOf(i)).start();
            }
    
        }
    }
    
  • 输出结果如下图:

    在这里插入图片描述

关注
打赏
1661269038
查看更多评论
立即登录/注册

微信扫码登录

0.0487s