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

贵州有网站的企业群晖wordpress设置

贵州有网站的企业,群晖wordpress设置,核酸造假7人枪毙视频,泗门网站建设目录 JUC并发编程之Semaphore-应用与深度源码剖析 1. Semaphore 是什么#xff1f; 2.怎么使用Semaphore#xff1f; 2.1构造方法 2.2 重要方法 2.3 基本使用 需求场景 基础版代码实现 tryAcquire()引入代码实现 acquireUninterruptibly(),acquire()对比代码实现 3.…目录 JUC并发编程之Semaphore-应用与深度源码剖析 1. Semaphore 是什么 2.怎么使用Semaphore 2.1构造方法 2.2 重要方法 2.3 基本使用 需求场景 基础版代码实现 tryAcquire()引入代码实现 acquireUninterruptibly(),acquire()对比代码实现 3.源码剖析【重点】 底层结构图 思路总结 semaphore.acquire() semaphore.release(): JUC并发编程之Semaphore-应用与深度源码剖析 1. Semaphore 是什么 Semaphore字面意思是信号量的意思它的作用就是控制访问特定资源的线程数目底层依赖AQS的状态State是在生产当中比较常用的一个工具类。 2.怎么使用Semaphore 2.1构造方法 public Semaphore(int permits) public Semaphore(int permits, boolean fair) permits表示许可线程的数量 fair表示公平性如果这个设为true的话下一次执行的线程就会是等待最久的线程 2.2 重要方法 public void acquire() throws InterruptedException public void release() tryAcquireint args,long timeout, TimeUnit unit acquire() 表示阻塞并获取许可release() 表示释放许可 2.3 基本使用 需求场景 资源访问服务限流Hystrix里面限流底层就是基于信号量的方式如图所示 基础版代码实现 /*** Description: TODO* Author: etcEriksen* Date: 2023/3/7**/ Slf4j SuppressWarnings({all}) public class SemaphoreRunner {public static void main(String[] args) {//构造参数为2表示的含义为该Semaphore所带有的总公共资源为2Semaphore semaphore new Semaphore(2);for (int i 0; i 10; i) {new Thread(new Task(semaphore,leomessi:i)).start();}}static class Task extends Thread {Semaphore semaphore ;public Task(Semaphore semaphore,String tname) {super(tname) ;this.semaphore semaphore ;}Overridepublic void run() {try {//semaphore.acquireUninterruptibly();semaphore.acquire(2);//获取2个公共资源才可以通过一个线程 【带有中断抛出异常的机制】log.info(Thread.currentThread().getName():aquire at time: System.currentTimeMillis()) ;Thread.sleep(5000) ;semaphore.release(2) ;//归还公共资源并且归还的公共资源数量要和一个线程通过时获取的公共资源数量要持平} catch (Exception e) {e.printStackTrace();}}public void fallback() {log.info(降级);}}}代码分析 运行结果 tryAcquire()引入代码实现 /*** Description: TODO* Author: etcEriksen* Date: 2023/3/7**/ Slf4j SuppressWarnings({all}) public class SemaphoreRunner {public static void main(String[] args) {//构造参数为2表示的含义为该Semaphore所带有的总公共资源为2Semaphore semaphore new Semaphore(2);for (int i 0; i 10; i) {new Thread(new Task(semaphore,leomessi:i)).start();}}static class Task extends Thread {Semaphore semaphore ;public Task(Semaphore semaphore,String tname) {super(tname) ;this.semaphore semaphore ;}Overridepublic void run() {try { // //semaphore.acquireUninterruptibly();// semaphore.acquire();//获取2个公共资源才可以通过一个线程 【带有中断抛出异常的机制】 // Thread.sleep(5000) ; // semaphore.release(2) ;//归还公共资源并且归还的公共资源数量要和一个线程通过时获取的公共资源数量要持平if (semaphore.tryAcquire(500, TimeUnit.MILLISECONDS)) {log.info(Thread.currentThread().getName():aquire at time: System.currentTimeMillis()) ;Thread.sleep(5000);semaphore.release();//释放公共资源} else {//如果500毫秒线程还没有获取到相对应的2个公共资源,那么降级处理fallback();}} catch (Exception e) {e.printStackTrace();}}public void fallback() {log.info(降级);}}} 分析代码这里结合了降级处理 运行结果 acquireUninterruptibly(),acquire()对比代码实现 acquire()当线程被中断后会抛出InterruptException异常。 acquireUninterruptibly()当线程被中断后不会抛出异常。 acquireUninterruptibly(): 结合代码分析 运行结果 acquire()结合代码分析 运行结果 3.源码剖析【重点】 底层结构图 ProcessOn Flowchart 思路总结 初始化Semaphore对象时指定总资源数量多个线程进来时会去竞争该公共资源但是在公平锁的情况下会维护一个CLH阻塞队列该队列为公平队列从前往后进行唤醒获取公共资源。当公共资源不够当前线程使用时或CLH阻塞队列存在节点时新进来的线程对象都会被封装为Node节点加入到CLH阻塞队列的尾部公平等待时机。非公平锁时与之正好相反。 semaphore.acquire() 1. 2. 3. acquireSharedInterruptibly()调用的tryAcquireShared解析 acquireSharedInterruptibly()调用的doAcquireSharedInterruptibly解析 很多相同的源码在之前的源码分析中都详细介绍了所以这里只记录新出现的源码思路 注doAcquireSharedInterruptibly方法调用的tryAcquireShared方法 4.应用层调用Interrupt()方法 应用层的interrupt()中断方法调用后底层park阻塞被中断那么继续向下执行代码 interrupt()方法给当前线程打上中断标识啦所以调用interrupted()方法时返回true并且消除中断标识。 semaphore.release(): 该方法后之前源码分析的lock.unlock()的思路基本一致。简略记录 1. 2. 3.
http://www.w-s-a.com/news/855717/

相关文章:

  • 云南建设工程质量监督网站wordpress网站导航主题
  • 徐州网站建设哪家好薇手机开源网站代码
  • 更新网站要怎么做呢泰安市58同城招聘网
  • 溧阳网站建设价格企业网站设计费用
  • 我建设的网站打开很慢河北住房和城乡建设厅网站卡
  • 门户网站广告的特点有网站的建设初步定位
  • 建设网站第一步网页建设方案
  • 网站开发需要那些人才wordpress 小工具原理
  • 广州建设局官方网站佛山高端网站制作公司
  • 东莞哪里能学建设网站网站备案值得吗
  • 中山 网站建设 骏域小程序开发课程
  • 北京网站建设成都微商城app官方下载
  • 网站开发用户登陆的安全wordpress 开发网站
  • 网站建设容易出现的问题四川seo关键词工具
  • 做外单网站有哪些内容服务好的南京网站建设
  • 阜阳微商城网站建设百度网站两两学一做心得体会
  • 建设银行积分网站观光农业规划设计
  • jsp项目个人网站开发用织梦做网站有什么公司会要
  • 和田网站制作无限动力网站
  • 长沙口碑好网站建设企业网站 需求
  • 哪个网站建设公司wordpress陌陌主题
  • 湖滨区建设局网站北京国际建设集团网站
  • 做服装团购有哪些网站wordpress 端口修改
  • 上海礼品定制网站响应式网站模版建站
  • 那种自行提取卡密的网站怎么做网站攻击
  • 洛阳免费网站建设qq是哪家公司开发的软件
  • 怎么做网站网页wordpress网址导航
  • 专业微信网站建设公司首选公司wordpress自动分类插件
  • 网站设计登录界面怎么做网站突然排名没了
  • wordpress 人物页面seo优化公司信