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

八埏网站开发山东通app下载安装2022

八埏网站开发,山东通app下载安装2022,成都网站建设 今网科技,自助建网站不需要域名目录 一、是什么?二、简单使用三、semaphore应用四、Semaphore原理 一、是什么? Semaphore:信号量,用来限制能同时访问共享资源的线程上限 二、简单使用 public class TestSemaphore {public static void main(String[] args) …

目录

      • 一、是什么?
      • 二、简单使用
      • 三、semaphore应用
      • 四、Semaphore原理

一、是什么?

Semaphore:信号量,用来限制能同时访问共享资源的线程上限

二、简单使用

public class TestSemaphore {public static void main(String[] args) {// 1. 创建 semaphore 对象Semaphore semaphore = new Semaphore(3);// 2. 10个线程同时运行for (int i = 0; i < 10; i++) {new Thread(() -> {try {semaphore.acquire();} catch (InterruptedException e) {e.printStackTrace();}try {log.debug("running...");sleep(1);log.debug("end...");} finally {semaphore.release();}}).start();}}
}

结果:始终只有三个线程处于正在运行的状态
在这里插入图片描述


三、semaphore应用

  • 使用semaphore限流,在访问高峰期时,让请求线程阻塞。当然它只适合限制单机线程数量,并且是仅限制线程数,而不是限制资源数(例如连接数)
  • 使用Semaphore实现简单连接池,对比享元模式下的实现(用wait和notify),性能和可读性要更好
class Pool {// 1. 连接池大小private final int poolSize;// 2. 连接对象数组private Connection[] connections;// 3. 连接状态数组 0 表示空闲, 1 表示繁忙private AtomicIntegerArray states;private Semaphore semaphore;// 4. 构造方法初始化public Pool(int poolSize) {this.poolSize = poolSize;// 让许可数与资源数一致this.semaphore = new Semaphore(poolSize);this.connections = new Connection[poolSize];this.states = new AtomicIntegerArray(new int[poolSize]);for (int i = 0; i < poolSize; i++) {connections[i] = new MockConnection("连接" + (i+1));}}// 5. 借连接public Connection borrow() {// t1, t2, t3// 获取许可try {semaphore.acquire(); // 没有许可的线程,在此等待} catch (InterruptedException e) {e.printStackTrace();}for (int i = 0; i < poolSize; i++) {// 获取空闲连接if(states.get(i) == 0) {if (states.compareAndSet(i, 0, 1)) {log.debug("borrow {}", connections[i]);return connections[i];}}}// 不会执行到这里return null;}// 6. 归还连接public void free(Connection conn) {for (int i = 0; i < poolSize; i++) {if (connections[i] == conn) {states.set(i, 0);log.debug("free {}", conn);semaphore.release();break;}}}
}

四、Semaphore原理

在这里插入图片描述
在这里插入图片描述

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

相关文章:

  • 阿里云服务器做网站好用吗做公司产品展示网站
  • 北京优化seo排名优化上海免费关键词排名优化
  • 塑业东莞网站建设wordpress 安全扫描
  • 烟台网站建设网站wordpress 展示类主题
  • 自己做的网站怎么删除回忆网站模板
  • c语言做项目网站用手机可以做网站嘛
  • 单页站好做seo吗做特色菜的网站
  • 江苏网站建设代理商30多了学网站建设晚吗
  • 杭州排名优化公司搜索引擎关键词优化方案
  • 南沙区做网站公司成都网站建设桔子科技
  • ae做的动效怎么放在网站上莱芜吧 百度贴吧
  • 创建网站怎么收费招聘页面设计模板
  • 吉祥物在线设计网站新品发布会ppt
  • 做淘客网站要什么样服务器大丰区住房和城乡建设局网站
  • 整站优化seo排名点击wordpress耗资源
  • 微企点网站建设的教学视频深圳动力网站设计公司
  • 做网站需要会的软件网站开发需求收集 模板
  • 佛山微网站建设最好网站建设公司排名
  • 杭州临平网站建设常州网站推
  • 网站空间购买哪家好哪里有信誉好的外贸客户搜索软件
  • 没有网站如何做SEO推广有用吗公众号怎么制作投票
  • 做精酿啤酒购买的网站wordpress 网站 上传
  • 东莞网站推广案例dedecms做的网站收费吗
  • 云南网站设计方案专做装修的网站
  • 深圳分销网站设计哪家好婚庆公司收费价格表
  • 绵阳的网站制作公司soho做网站要写品牌吗
  • 网站建设的难处南博会官方网站建设投入
  • 网站优化服务杂志网站建设推广方案
  • 哪里有网站制作制作网站的app吗
  • 毕设做的网站可以用模板改吗龙岗企业网站改版公司