当前位置: 首页 > news >正文

做摄影网站的目的是什么开源门户网站建设方案

做摄影网站的目的是什么,开源门户网站建设方案,要怎样夸一个网站做的好看,seo网站优化方案摘要文章目录 核心思想:停车场模型 🅿️最简单易懂的代码示例代码解析运行效果分析 核心思想:停车场模型 🅿️ 想象一个只有 3个车位 的小型停车场。Semaphore 就好比是这个停车场的入口管理员。 Semaphore semaphore new Semaphore…

文章目录

      • 核心思想:停车场模型 🅿️
      • 最简单易懂的代码示例
      • 代码解析
      • 运行效果分析

核心思想:停车场模型 🅿️

想象一个只有 3个车位 的小型停车场。Semaphore 就好比是这个停车场的入口管理员。

  • Semaphore semaphore = new Semaphore(3);

    • 这就等于创建了一个有3个固定车位的停车场。这个 3 就是“许可证”的数量。
  • semaphore.acquire(); (获取许可)

    • 一辆车开到停车场入口。
    • 管理员(acquire方法)会检查:“里面还有空位吗?”
    • 如果有空位:管理员放行,车开进去,同时他会把可用车位的数量减一。
    • 如果没空位:管理员会说:“满了,请在门口排队等着。” 这辆车(这个线程)就会被阻塞,在入口处排队。
  • semaphore.release(); (释放许可)

    • 停车场里的一辆车办完事要开走。
    • 它开出出口时,管理员(release方法)看到了,就把可用车位的数量加一。
    • 同时,管理员会朝门口排队的车辆大喊:“空出来一个位子,排在第一的那辆车可以进来了!”

Semaphore 就是用这个简单的“计数”方式,来控制同时能访问某个资源的线程数量


最简单易懂的代码示例

下面我们就用代码来模拟 8辆车抢3个车位 的场景。

package Semaphore;
import java.util.Random;
import java.util.concurrent.Semaphore;public class SimpleSemaphoreDemo {public static void main(String[] args) {// 1. 创建一个 Semaphore,设定许可证数量为 3(即3个停车位)Semaphore semaphore = new Semaphore(3);// 2. 模拟8个线程(8辆车)for (int i = 1; i <= 8; i++) {final int carNumber = i;new Thread(() -> {try {System.out.println("车辆 " + carNumber + " 到达停车场门口,等待进入...");// 3. 尝试获取一个许可证(尝试进入停车场)// 如果没有许可证,线程会在这里阻塞等待semaphore.acquire();// --- 成功获取到许可证后,才能执行下面的代码 ---System.out.println(">> 车辆 " + carNumber + " 成功进入停车场!");// 模拟停车时间System.out.println("   车辆 " + carNumber + " 正在停车...");Thread.sleep(new Random().nextInt(3000) + 1000); // 随机停1-4秒} catch (InterruptedException e) {e.printStackTrace();} finally {// 4. 释放许可证(车辆离开停车场)// 这个操作必须放在 finally 块中,确保即使发生异常,许可证也一定会被释放System.out.println("<< 车辆 " + carNumber + " 驶出停车场。");semaphore.release();}}).start();}}
}

代码解析

  1. new Semaphore(3): 创建了一个容量为3的信号量,代表我们的停车场只有3个车位。
  2. semaphore.acquire(): 这是线程获取“门票”的关键一步。如果“门票”发完了(3个车位都占满了),其他线程就会在这里停下来,进入阻塞状态,老老实实地排队。
  3. Thread.sleep(...): 模拟线程获取到资源后,正在使用它的过程(即车辆停在车位里的时间)。
  4. semaphore.release(): 这是最重要的一步!线程使用完资源后,必须“交还门票”,这样其他正在排队等待的线程才有机会获取到资源。把它放在 finally 块里是一个好习惯,能保证无论业务代码是否抛出异常,锁都能被释放。

运行效果分析

在这里插入图片描述

当你运行这个程序时,你会清晰地看到:

  1. 控制台会立刻打印出3条 “>> 车辆 x 成功进入停车场!” 的信息。
  2. 剩下的5个线程会停在 “等待进入...” 这一步,说明它们被阻塞了。
  3. 过了1-4秒后,每当有一个 “<< 车辆 x 驶出停车场。” 的信息出现,几乎在同一时间,就会有一个新的 “>> 车辆 y 成功进入停车场!” 出现。

这个过程完美地展示了 Semaphore 如何像一个停车场管理员一样,精确地控制着同时办事的线程数量。

http://www.yayakq.cn/news/322129/

相关文章:

  • 网站建设教程 零基础镇江网页
  • 中小企业做网站推广大连最繁华的区是哪个区
  • 写作网站原码大淘客平台怎么做分销网站
  • 临沂龙文网站建设建行官网个人银行
  • 湖南沙坪建设有限公司网站淘宝搜索关键词查询工具
  • 公司做网站 微信平台做网站的几个必要步骤
  • 柳州市城市建设局网站wordpress模板yunnut
  • 代做ppt网站哈尔滨网页设计公司
  • 个人工作室网站ftp媒体库wordpress
  • 专注律师微网站建设与律师微信营销6唯品会专门做特卖的网站
  • 网站栏目是什么网络工程师难学吗
  • wordpress站点切换为中文建立网站后期需要干嘛
  • 做网站文案策划步骤网站建设去哪里学
  • 北京开发网站中国手机网站
  • 电话营销怎么做网站搜索引擎优化
  • 怎么做个人网站的网站开发方面的文献
  • 网站建设的外国文献dede网站制作教程
  • tp5.1做的网站自个网站
  • 制作个人网站教程教程建设网站
  • 西安地区专业做网站公司wordpress论坛模板下载地址
  • 哈尔滨做网站哪里好wordpress后台编辑小工具
  • 最优惠的赣州网站建设农业网站平台建设方案
  • 微信 网站一个简单鲜花的html网页
  • wordpress 建站 pdfwordpress电话注册
  • 怎么注销网站查备案做网站哪个平台好一点
  • 平台网站建设的公司手机前端开发软件工具
  • 淘宝客网站建设难度大吗该网站暂时无法访问404
  • 做卖图片的网站能赚钱吗wordpress md风格主题
  • 哪个网站做电商门槛最低东莞网站建设网络公司公司
  • 中山的网站建设公司商城网站建设建议