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

四川省建设厅网站在线申报网推怎么做

四川省建设厅网站在线申报,网推怎么做,商城网站内容模块有哪些,科技画作品概述 用idea debug功能演示上一篇博客中提到的 本实现中的出队、入队的实现逻辑会不会有线程安全问题?如果有,怎么解决? 测试用例 package com.lovehena.datastructure.test;import com.lovehena.datastructure.ArrayQueue;/* * 测试 offer…

概述

用idea debug功能演示上一篇博客中提到的

本实现中的出队、入队的实现逻辑会不会有线程安全问题?如果有,怎么解决?

测试用例

package com.lovehena.datastructure.test;import com.lovehena.datastructure.ArrayQueue;/*
* 测试 offer() poll()方法的线程安全问题
* */
public class TestArrayQueue2 {/***  测试 offer() 方法的线程安全问题* @param args*/public static void main(String[] args) throws InterruptedException {ArrayQueue queue = new ArrayQueue(3);/***  预期是 线程1将1入队 线程2将2入队*  但由于可能发生指令交错 导致线程安全问题 则可能的结果是 队列中只有2 或者 只有1*  用idea debug功能模拟*/Thread t1 = new Thread(() -> {queue.offer(1);}, "t1");Thread t2 = new Thread(() -> {queue.offer(2);}, "t2");t1.start();t2.start();// 等待t1、t2线程执行完毕t1.join();t2.join();// 打印得到的queuequeue.print();}
}

演示

文字不好叙述,录制了一个视频。

测试用例输出

元素2将元素1覆盖的情形

元素2将元素1覆盖的情形

元素1将元素2覆盖的情形

元素1将元素2覆盖的情形

解决线程安全问题

常见思路就是加锁。
我这个不涉及集群部署,所以用synchronized、lock(java.util.concurrent.locks.Lock)实现即可。
代码示例

	// 多个线程往同一队列中入队元素时,确保锁是同一个。// 一般将锁对象设置为队列的一个成员变量private ReentrantLock lock=new ReentrantLock(); // 控制offer的锁
	public boolean offer(int value) {lock.lock(); // 加锁成功后 以下代码才会被执行try {if (tail == capacity) { //队列放满了log.info("元素 {} 入队失败 因为队列放满了", value);return false;}arr[tail] = value;tail++;}finally {lock.unlock(); // 一定要记得手动释放锁 否则导致其他线程无法获取到锁 进而无法入队元素}return true;}

以上代码经测试,不会再有线程安全问题。

扩展

测试poll()方法的线程安全问题。

加锁解决poll()方法的线程安全问题。

最后

好了,如果对你有帮助的话,欢迎点个免费的赞哦。


文章转载自:

http://IWQieyPK.syynx.cn
http://v9fl3P1k.syynx.cn
http://GJsA1YtL.syynx.cn
http://u4fblLS3.syynx.cn
http://GiMSoUHW.syynx.cn
http://bPaLrBs5.syynx.cn
http://n1DVzkwa.syynx.cn
http://8ms2n2XF.syynx.cn
http://QxhaoVH1.syynx.cn
http://NrNM1Ltv.syynx.cn
http://lgAOjLJm.syynx.cn
http://WqlHrVyE.syynx.cn
http://Yg8TbpLC.syynx.cn
http://rIMcUdLQ.syynx.cn
http://J2P7066q.syynx.cn
http://eQ9rWPM4.syynx.cn
http://xw030Tzu.syynx.cn
http://nMT8cGj4.syynx.cn
http://vdS07YHK.syynx.cn
http://Fr1TEznr.syynx.cn
http://U1AZvv7O.syynx.cn
http://SWDoj1C6.syynx.cn
http://zugaaleT.syynx.cn
http://T8NUovLc.syynx.cn
http://qyX0MNyr.syynx.cn
http://eJrNYIEE.syynx.cn
http://kwPbDPSG.syynx.cn
http://YJq8OzDh.syynx.cn
http://iGV01NWO.syynx.cn
http://N281nMju.syynx.cn
http://www.dtcms.com/wzjs/750262.html

相关文章:

  • 房产设计公司网站天津建设信息工程
  • 如何建立微网站详细wordpress 3.5 下载地址
  • 网页站点不安全义乌建设银行交罚款网站
  • 凯里建设网站自适应网站开发
  • 天津响应式网站建设2023北京封控了
  • 网络商城网站怎样做关键词优化北京网站建设价格低
  • 企业网站建设方案优化做维修那个网站发布信息好
  • 医院网站建设公司价格低重庆seo技术博客
  • 网站收录提交入口大全wordpress能商用吗?
  • 关于论文网站开发参考文献网站设计做什么
  • 百度网盘做自已网站营销型网站建站
  • 搭建网站属于什么专业无线网络
  • 广东网站建设方案报价朝阳区北京网站建设
  • 大连网站建设求职简历中英 网站模板 带手机版
  • 本机可以做网站的服务器吗公司域名更改 网站怎么做提示
  • 百度网站优化升上去做网站推广挣多少钱
  • 外贸网站推广如何做建盏产业品牌
  • 巴西网站后缀知页怎么转换wordpress
  • 国产化网站建设wordpress用户密码重置
  • 太原市住房和城乡建设局的网站售票网站建设
  • 中国建设银行网站首页手机银行网站建设电
  • 石家庄做网站网络公司腾讯域名注册官网
  • 杭州建设信用网新网站个人网站可以做经营性的吗
  • 北京美的网站一般通过中介找工作需要多少钱
  • 网站seo文章该怎么写免费企业网站认证
  • 阿里云linux主机如何添加2个网站福田欧曼重卡
  • 计算机网站建设维护的基本知识wordpress调用当前页文章
  • 烟台公司中企动力提供网站建设朝阳住房和城乡建设官方网站
  • .net电商网站开发设计申请一个网站空间
  • 简单的招聘网站怎么做大型电子商务网站需要配服务器