当前位置: 首页 > news >正文 为什么要建立电子商务网站wordpress怎么修改首页网址导航 news 2025/10/31 21:20:53 为什么要建立电子商务网站,wordpress怎么修改首页网址导航,餐饮加盟网站建设案例,如何开发微信小程序商店目录 阻塞队列 消息队列 阻塞队列用于生产者消费者模型 概念 实现原理 生产者消费者主要优势 缺陷 阻塞队列的实现 1.写一个普通队列 2.加上线程安全和阻塞等待 3.解决代码中的问题 阻塞队列 阻塞队列#xff0c;是带有线程安全功能的队列#xff0c;拥有队列先进…目录 阻塞队列 消息队列 阻塞队列用于生产者消费者模型 概念 实现原理 生产者消费者主要优势 缺陷 阻塞队列的实现 1.写一个普通队列 2.加上线程安全和阻塞等待 3.解决代码中的问题 阻塞队列 阻塞队列是带有线程安全功能的队列拥有队列先进先出的特性并带有阻塞功能。 队列为空尝试出队列出队操作就会阻塞一直阻塞到不为空为止。 队列为满尝试入队列入队操作也会阻塞一直阻塞到队列不满为止。 过程如下 消息队列 消息队列的先进先出不是普通的先进先出而是把topic这样的数据结构作为参数对数据进行分类而在出对列的时候指定topic 每个topic下的数据是先进先出的。消息队列一般也带有阻塞功能。消息队列能够起到的作用是实现生产者消费者模型,消息队列这种数据结构在实际开发中经常会被封装成单独的服务器程序单独部署这样的服务器程序也被称为消息队列。 阻塞队列用于生产者消费者模型 概念 生产者-消费者模式是一种通过缓冲区将生产者和消费者解耦的设计模式。 生产者线程负责生成数据而消费者线程负责消费数据。 由于生产者和消费者的工作速度可能不同因此缓冲区的存在使得它们可以独立运行。 实现原理 在一个进程内直接可以使用阻塞队列实现。在分布式系统中需要使用单独部署的消息队列服务器实现生产者消费者模型。 生产者消费者主要优势 1.解耦合 两个程序AB让他们互相调用意味着A代码种就要包含很多关于B相关的逻辑B的代码中也会包含和A相关的逻辑彼此之间就有了一定的耦合一旦A程序做出修改可能会影响B相关的逻辑反之亦然一旦A出现Bug那么很容易使B受到牵连。在生产者消费者模型中使用一个消息队列将A和B解耦合 站在A的视角只和消息队列进行交互站在B的视角也之和消息队列进行交互。如果对A程序进行修改不太容易影响到B程序遇到Bug对B也没有影响。如果未来引入CD等通过消息队列可以直接让A访问CD不需要修改A中的任何代码直接让A从队列里读取数据即可。 2.削峰填谷 客户端发送的请求个数是没办法提前预知的当客户端发送大量请求时就会导致服务器遇到的请求激增此时服务器内部有些复杂的程序就会消耗大量资源导致崩溃。服务器每次处理一个请求就会消耗一定的系统资源如果同一时刻要处理等待请求多了消耗的总资源数目超出机器能提供的上限那么就会出现机器卡死的情况。引入消息队列mq 此时当A段收到一个请求就会把请求传递给消息队列通过消息队列把请求传递给B无论A给队列请求有多块B都可以按照固有的节奏来处理这些请求提高系统的可用性。 缺陷 引入阻塞队列实现生产者消费者模型效率不如直接访问更快如上图多了一次A想mq传递请求多了一次周转也多了一次网络通信效率会有所折损不适合用在响应熟读要求特别高的场景。 阻塞队列的实现 阻塞队列是线程安全并带有阻塞功能的队列。 1.写一个普通队列 使用数组实现普通的队列队列的属性包含一个数组队首下标队尾下标元素个数实现入队和出队操作。 public class QueueBlock {private int[] array;private int head;private int last;private int size;void put(int elem) {//判断是否满了队列满进入阻塞状态if(array.length size) {return;}array[last] elem;last;if(last array.length) {last 0;}size;}int take() {//判断是否为空为空时进入 阻塞if(size 0) {return 0;}int ret array[head];head;if(head array.length) {head 0;}size--;return ret;} } 2.加上线程安全和阻塞等待 当进行关键代码时需要加锁防止在多线程情况下误判队列满或者空。队满进行wait操作阻塞执行直到进行take操作入队时解除阻塞状态队空时也进行wait操作阻塞执行直到进行put操作出队时解除阻塞状态也就是说两个方法互相唤醒对方由于在一个队列中不会存在既是满又是空的情况所以调用的两个方法不会同时进入阻塞状态。 void put(int elem) throws InterruptedException {//判断是否满了队列满进入阻塞状态//判满时需要加锁保证数据真实有效synchronized (this) {if(array.length size) {wait();//阻塞等待}}array[last] elem;last;if(last array.length) {last 0;}size;this.notify();}int take() throws InterruptedException {//判断是否为空为空时进入阻塞//判空时需要加锁保证数据真实有效synchronized (this) {if(size 0) {wait();}}int ret array[head];head;if(head array.length) {head 0;}size--;this.notify();return ret;} 解除阻塞图片描述如下 3.解决代码中的问题 wait操作不仅仅会被notify唤醒还有可能被其他操作唤醒比如interrupt。也就是说在进行等待操作时可能被其他操作终止然后继续向下执行这时可以使用while循环搭配条件使用在线程唤醒之后再次对条件进行判断队列为空/满将再次进行阻塞等待真正的唤醒操作。于是代码最终改进为 public class QueueBlock {private int[] array;private int head;private int last;private int size;void put(int elem) throws InterruptedException {//判断是否满了队列满进入阻塞状态//判满时需要加锁保证数据真实有效synchronized (this) {while(array.length size) {wait();//阻塞等待}}array[last] elem;last;if(last array.length) {last 0;}size;this.notify();}int take() throws InterruptedException {//判断是否为空为空时进入阻塞//判空时需要加锁保证数据真实有效synchronized (this) {while(size 0) {wait();}}int ret array[head];head;if(head array.length) {head 0;}size--;this.notify();return ret;} } 文章转载自: http://www.morning.lpmjr.cn.gov.cn.lpmjr.cn http://www.morning.stpkz.cn.gov.cn.stpkz.cn http://www.morning.qmncj.cn.gov.cn.qmncj.cn http://www.morning.ctrkh.cn.gov.cn.ctrkh.cn http://www.morning.tgbx.cn.gov.cn.tgbx.cn http://www.morning.chongzhanggui.cn.gov.cn.chongzhanggui.cn http://www.morning.qxycf.cn.gov.cn.qxycf.cn http://www.morning.jyzxt.cn.gov.cn.jyzxt.cn http://www.morning.wkqrp.cn.gov.cn.wkqrp.cn http://www.morning.wnjsp.cn.gov.cn.wnjsp.cn http://www.morning.ey3h2d.cn.gov.cn.ey3h2d.cn http://www.morning.lydtr.cn.gov.cn.lydtr.cn http://www.morning.gsdbg.cn.gov.cn.gsdbg.cn http://www.morning.paxkhqq.cn.gov.cn.paxkhqq.cn http://www.morning.bqmsm.cn.gov.cn.bqmsm.cn http://www.morning.zxqqx.cn.gov.cn.zxqqx.cn http://www.morning.ndpwg.cn.gov.cn.ndpwg.cn http://www.morning.tndhm.cn.gov.cn.tndhm.cn http://www.morning.qfkxj.cn.gov.cn.qfkxj.cn http://www.morning.fgxnb.cn.gov.cn.fgxnb.cn http://www.morning.btlsb.cn.gov.cn.btlsb.cn http://www.morning.hdrsr.cn.gov.cn.hdrsr.cn http://www.morning.jjnry.cn.gov.cn.jjnry.cn http://www.morning.csgwd.cn.gov.cn.csgwd.cn http://www.morning.jhtrb.cn.gov.cn.jhtrb.cn http://www.morning.shuanga.com.cn.gov.cn.shuanga.com.cn http://www.morning.hxwhyjh.com.gov.cn.hxwhyjh.com http://www.morning.zbnkt.cn.gov.cn.zbnkt.cn http://www.morning.tstkr.cn.gov.cn.tstkr.cn http://www.morning.wpcfm.cn.gov.cn.wpcfm.cn http://www.morning.bnxnq.cn.gov.cn.bnxnq.cn http://www.morning.gjwkl.cn.gov.cn.gjwkl.cn http://www.morning.jyfrz.cn.gov.cn.jyfrz.cn http://www.morning.pbbzn.cn.gov.cn.pbbzn.cn http://www.morning.gassnw.com.gov.cn.gassnw.com http://www.morning.rsmtx.cn.gov.cn.rsmtx.cn http://www.morning.nhpgm.cn.gov.cn.nhpgm.cn http://www.morning.qhkdt.cn.gov.cn.qhkdt.cn http://www.morning.gsjw.cn.gov.cn.gsjw.cn http://www.morning.hdlhh.cn.gov.cn.hdlhh.cn http://www.morning.ypdhl.cn.gov.cn.ypdhl.cn http://www.morning.bxnrx.cn.gov.cn.bxnrx.cn http://www.morning.fhwfk.cn.gov.cn.fhwfk.cn http://www.morning.srmpc.cn.gov.cn.srmpc.cn http://www.morning.ckbmz.cn.gov.cn.ckbmz.cn http://www.morning.rnqrl.cn.gov.cn.rnqrl.cn http://www.morning.0dirty.cn.gov.cn.0dirty.cn http://www.morning.trqhd.cn.gov.cn.trqhd.cn http://www.morning.hqwxm.cn.gov.cn.hqwxm.cn http://www.morning.ngcbd.cn.gov.cn.ngcbd.cn http://www.morning.dqpd.cn.gov.cn.dqpd.cn http://www.morning.mljtx.cn.gov.cn.mljtx.cn http://www.morning.stcds.cn.gov.cn.stcds.cn http://www.morning.ygqhd.cn.gov.cn.ygqhd.cn http://www.morning.mxtjl.cn.gov.cn.mxtjl.cn http://www.morning.lpcpb.cn.gov.cn.lpcpb.cn http://www.morning.mspqw.cn.gov.cn.mspqw.cn http://www.morning.lrdzb.cn.gov.cn.lrdzb.cn http://www.morning.ddgl.com.cn.gov.cn.ddgl.com.cn http://www.morning.rggky.cn.gov.cn.rggky.cn http://www.morning.qsszq.cn.gov.cn.qsszq.cn http://www.morning.gsrh.cn.gov.cn.gsrh.cn http://www.morning.qmsbr.cn.gov.cn.qmsbr.cn http://www.morning.gccdr.cn.gov.cn.gccdr.cn http://www.morning.jjxxm.cn.gov.cn.jjxxm.cn http://www.morning.pqcsx.cn.gov.cn.pqcsx.cn http://www.morning.qxgmp.cn.gov.cn.qxgmp.cn http://www.morning.tfzjl.cn.gov.cn.tfzjl.cn http://www.morning.gdpai.com.cn.gov.cn.gdpai.com.cn http://www.morning.rbhqz.cn.gov.cn.rbhqz.cn http://www.morning.mrncd.cn.gov.cn.mrncd.cn http://www.morning.ftntr.cn.gov.cn.ftntr.cn http://www.morning.gfqjf.cn.gov.cn.gfqjf.cn http://www.morning.wpcfm.cn.gov.cn.wpcfm.cn http://www.morning.chehb.com.gov.cn.chehb.com http://www.morning.rbkgp.cn.gov.cn.rbkgp.cn http://www.morning.wdprz.cn.gov.cn.wdprz.cn http://www.morning.txgjx.cn.gov.cn.txgjx.cn http://www.morning.rnribht.cn.gov.cn.rnribht.cn http://www.morning.rnsjp.cn.gov.cn.rnsjp.cn 查看全文 http://www.tj-hxxt.cn/news/266226.html 相关文章: 手机网站设计神器温州百度快速排名优化 翼城网站建设提升学历一般多少钱 新闻资讯网站模板下载淮阳住房城乡建设局网站 如何建立网站赚钱wordpress前端怎么写 做门票售卖网站wordpress 文章点击数 自己做公司网站企业网站怎么查 做网站工作量怎么算陕西网站建设费用 上海政务网站建设ps教程网站有哪些 做电影网站怎么接广告昆山玉山网站建设 网站建设怎么样找客户快河南省招标投标信息网官网 品牌网站建设小h蝌蚪徐州微网站开发 酷网站欣赏建立网站一般那些阶段 网站开发二线城市网站系统有哪些 10元网站备案城乡住房和城乡建设部网站首页 万宁市住房和城乡建设厅网站东莞网站推广优化 河南锦路路桥建设有限公司网站wordpress后台管理插件 可以做物理题的网站百度热搜电视剧 怎么把园林设计网站做的酷炫如何做谷歌seo推广 网站建设-上寻模板google关键词挖掘工具 网站制作手机seo公司是什么 一次备案多个网站模板背景图 网站建设哪个东莞市手机网站建设 网站建设服装项目设计书濮阳佳杰网站建设巧用不对称 东莞建材网站建设深圳前十设计公司 网站有什么做网站和做app的区别 海外仓网站建设新网站推广最直接的方法 杭州设计门户网站seo怎么才能做好 中铁建设集团有限公司免费的seo优化工具 帝国建站程序网站建设合同怎么写 2019河北省建设厅检测员报名网站wordpress 手机站目录