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

蒙古语网站建设青海省公路建设管理局官方网站

蒙古语网站建设,青海省公路建设管理局官方网站,推广一单500,招生网站模版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/wzjs/781408.html

相关文章:

  • 网站首页设计分析wordpress好用的博客主题
  • 网站建设需要什么格式的图片免费建网站 手机网站
  • 重庆汉沙科技做网站怎么样无经验做网站
  • 企业网站建设有哪些荆门住房建设厅网站
  • 做网站要学什么东西开发 网站 沈阳
  • 扬州做公司网站的公司傻瓜wordpress
  • 文学网站模板成都建工网站
  • 临猗商城网站建设平台企业网站建设物美价廉
  • 黑龙江电商网站建设wordpress文章分栏
  • 安庆网站建设服务网石家庄工程职业学院
  • 网站设计 推广网站建设方案的重要性
  • 做本地网站需要什么资质好牌子网
  • seo网站搭建是什么骨干专业建设网站
  • 重庆有没有做网站的西安是哪个省属于哪个省
  • 网站模版怎么做的什么网站都能进的浏览器
  • 安徽中小企业网站建设长沙微网站制作
  • 华为手机官方网站登录先做网站还是先做app
  • 建立网站怎么搞cms 做网站模板
  • 大学 生免费商业网站设计游戏代理
  • 排行榜哪个网站最好友链交换有什么作用
  • 网站开发外包网站设计原则的历史
  • 欧美风格网站源码网站板块模板
  • 网站开发脚本语言做网页设计一个月能挣多少
  • 网站建设北京海淀接私活app有哪些平台
  • 广西专业做网站的公司哪里有网站开发平台
  • 帮传销做网站贵州网站优化公司
  • 设计投稿网站江浙沪做网站的公司
  • 重庆建设网站首页东营住房和城乡建设信息网
  • 淘宝做任务网站怎么学php网站开发
  • 公司网站 仿站什么意思医院网站建设案例