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

自己做网站能赚钱吗做spa的网站怎么推广

自己做网站能赚钱吗,做spa的网站怎么推广,能自己做生物实验的网站,铜仁做网站公司1. Semaphore - 信号量 1.1. 信号量模型 信号量的定义: Semaphore(信号量):是并发编程中的一种线程同步工具,控制同时访问某资源的线程数量。 模型结构: 计数器(count)等待队列…

1. Semaphore - 信号量

1.1. 信号量模型

信号量的定义:

Semaphore(信号量):是并发编程中的一种线程同步工具,控制同时访问某资源的线程数量。

模型结构:

  1. 计数器(count)
  2. 等待队列(queue)
  3. 三个原子操作方法:
    • init(int c):初始化计数器值为 c
    • down()(Java 中为 acquire()):
      • count--,若结果 < 0,则阻塞线程,加入等待队列
    • up()(Java 中为 release()):
      • count++,若结果 ≤ 0,唤醒等待队列中的一个线程

特点:

  • 原子性由 Java 的 Semaphore 实现保证
  • down()/up() 也称为:P() / V(),或 semWait() / semSignal()

代码话信号量模型:

class Semaphore{// 计数器int count;// 等待队列Queue queue;// 初始化操作Semaphore(int c){this.count=c;}// void down(){this.count--;if(this.count<0){// 将当前线程插入等待队列// 阻塞当前线程}}void up(){this.count++;if(this.count<=0) {// 移除等待队列中的某个线程 T// 唤醒线程 T}}
}

示例:使用 Semaphore 实现互斥访问(类似锁)

static int value = 0;  
static final Semaphore s = new Semaphore(1); // 1 表示只能一个线程访问static void addOne() {s.acquire(); // 进入前尝试获取许可证try {value += 1;} finally {s.release(); // 离开后释放许可证}
}

执行逻辑分析:

  • 如果有两个线程同时 acquire()
    • 一个成功(count = 0),继续执行
    • 一个阻塞(count = -1)
  • 当执行完后 release(),阻塞的线程才被唤醒
  • 实现了互斥访问

1.2. 实现限流器

Semaphore 的优势 —— 可支持多个线程访问

  • Lock 只能实现一个线程进入临界区
  • Semaphore 可支持 多个线程同时访问资源

场景举例:对象池(或连接池)

class ObjPool<T, R> {final List<T> pool;final Semaphore sem;ObjPool(int size, T t) {pool = new Vector<>();for (int i = 0; i < size; i++) {pool.add(t);}sem = new Semaphore(size); // 控制最多 size 个线程访问}R exec(Function<T, R> func) {T t = null;sem.acquire(); // 尝试获取资源许可try {t = pool.remove(0); // 从池中取出对象return func.apply(t); // 执行业务逻辑} finally {pool.add(t); // 归还对象sem.release(); // 释放许可}}
}

核心逻辑:

  • 控制同时最多有 N 个线程访问资源
  • 获取资源 → 使用资源 → 归还资源
  • 限流 + 对象复用(高效)
http://www.dtcms.com/a/532042.html

相关文章:

  • 网络管理中的名词
  • gitlab配置git的ssh秘钥
  • 机器狗进化论:当“园区跑腿”遇上具身智能,一场静悄悄的变革正在发生
  • 江宁区建设工程质量监督站网站学校网站源码开源
  • Docker LXC深度解析:从基础概念到实战演练
  • Spring Boot3零基础教程,docker 批量安装软禁,笔记68
  • 【C语言】函数栈帧的创建和销毁
  • 架构的尺度:从单机到分布式,服务端技术的深度演进
  • 优秀国内个人网站网址网站设计需要那些模块
  • 【ARM驱动】【FreeROTS移植到ARM驱动平台介绍】
  • BELLE中的表1
  • go-ethereum core之交易索引txIndexer
  • 描述对于营销型网站建设很重要飘红效果更佳信阳做网站 汉狮网络
  • 油猴脚本学习1——元数据头部
  • mysql 如何让事件执行
  • PantherX2 debain/armbian Jellyfin10.10.7升级10.11启动后无法监听端口8096的解决办法
  • 网站建设利弊中山币做网站公司
  • Kaleidoscope for mac 文件对比工具
  • LeetCode 1901.寻找峰值2
  • 沈阳建设网站费用北京网站优化软件
  • 【Android】【底层原理】深入解析SELinux模块
  • 阮一峰《TypeScript 教程》学习笔记——注释指令
  • 最好的开发网站建设价格app免费制作平台下载
  • 供应链进销存源码uniapp全开源ERP多仓库管理系统pc+app手机端
  • 生物化学Learning Track(15)酶活性的调节
  • 站酷设计网站官网入口下载国外手机设计网站
  • Rust 泛型与特性
  • GPT-1 技术报告
  • 中英双语 网站 模板wordpress返佣
  • 机器学习库的决策树绘制