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

免费素材网站 可商用天元建设集团有限公司张桂玉

免费素材网站 可商用,天元建设集团有限公司张桂玉,网站外链建设到底该怎么做,网站建设搜索优化app推广新闻营销一、ThreadLocal在多线程环境中没有清理 由于ThreadLocal是和线程绑定的#xff0c;如果线程被复用了#xff0c;也即使用了线程池#xff0c;那么ThreadLocal中的值是可能被复用的#xff0c;这个特性如果是开发者没有预料到的#xff0c;那么会产生很大的问题。例如如果线程被复用了也即使用了线程池那么ThreadLocal中的值是可能被复用的这个特性如果是开发者没有预料到的那么会产生很大的问题。例如在JAVA web应用中我们通常会使用很多ThreadLocal来保存一次请求的不同上下文信息其中就包含登录用户如果一次请求完成后没有清理掉当前登录用户信息那么当另外一个用户的请求进来就会使用上一个用户如果是涉及到数据写入将直接导致数据错乱造成严重生产问题。 二、ConcurrentHashMap使用的问题 ConcurrentHashMap提供的能力是保证单个操作在多线程环境下是安全的。如果有一段逻辑是先读取size大小在决定是否往map里put()那么这段逻辑必然产生并发问题。因为错误理解的ConcurrentHashMap的能力。解决办法是用加锁的方式控制并发。 三、CopyOnWriteArrayList使用的问题 CopyOnWrite 是一个常用的技术Linux、Redis中都用到了。在 Java 中CopyOnWriteArrayList 虽然是一个线程安全的 ArrayList但因为其实现方式是每次修改数据时都会复制一份数据出来所以有明显的适用场景即读多写少或者说希望无锁读的场景。 //测试并发写的性能 GetMapping(write) public Map testWrite() { ListInteger copyOnWriteArrayList new CopyOnWriteArrayList(); ListInteger synchronizedList Collections.synchronizedList(new ArrayList()); StopWatch stopWatch new StopWatch(); int loopCount 100000; stopWatch.start(Write:copyOnWriteArrayList); //循环100000次并发往CopyOnWriteArrayList写入随机元素 IntStream.rangeClosed(1, loopCount).parallel().forEach(__ - copyOnWriteArrayList.add(ThreadLocalRandom.current().nextInt(loopCount))); stopWatch.stop(); stopWatch.start(Write:synchronizedList); //循环100000次并发往加锁的ArrayList写入随机元素 IntStream.rangeClosed(1, loopCount).parallel().forEach(__ - synchronizedList.add(ThreadLocalRandom.current().nextInt(loopCount))); stopWatch.stop(); log.info(stopWatch.prettyPrint()); Map result new HashMap(); result.put(copyOnWriteArrayList, copyOnWriteArrayList.size()); result.put(synchronizedList, synchronizedList.size()); return result; }//帮助方法用来填充List private void addAll(ListInteger list) { list.addAll(IntStream.rangeClosed(1, 1000000).boxed().collect(Collectors.toList())); }//测试并发读的性能 GetMapping(read) public Map testRead() { //创建两个测试对象 ListInteger copyOnWriteArrayList new CopyOnWriteArrayList(); ListInteger synchronizedList Collections.synchronizedList(new ArrayList()); //填充数据 addAll(copyOnWriteArrayList); addAll(synchronizedList); StopWatch stopWatch new StopWatch(); int loopCount 1000000; int count copyOnWriteArrayList.size(); stopWatch.start(Read:copyOnWriteArrayList); //循环1000000次并发从CopyOnWriteArrayList随机查询元素 IntStream.rangeClosed(1, loopCount).parallel().forEach(__ - copyOnWriteArrayList.get(ThreadLocalRandom.current().nextInt(count))); stopWatch.stop(); stopWatch.start(Read:synchronizedList); //循环1000000次并发从加锁的ArrayList随机查询元素 IntStream.range(0, loopCount).parallel().forEach(__ - synchronizedList.get(ThreadLocalRandom.current().nextInt(count))); stopWatch.stop(); log.info(stopWatch.prettyPrint()); Map result new HashMap(); result.put(copyOnWriteArrayList, copyOnWriteArrayList.size()); result.put(synchronizedList, synchronizedList.size()); return result; }
http://www.hkea.cn/news/14574843/

相关文章:

  • 前端兼职平台的行业前景seo系统oem
  • 网站系统分析多个wordpress站点同步
  • app开发网站建设包含项目网站开发保密合同范本
  • 涂料厂做网站有用吗怎样开通微信公众号平台
  • 长沙微交易网站建设在哪里做网站好
  • 六安网站建设招聘惠州网站建设 翻译6
  • 童程童美少儿收费价目表郑州网站及优化
  • 个人网站的备案方式app开发注意事项
  • 知道源代码如何做网站十大免费ppt课件网站
  • 哪些网站结构是不合理的服装网站开发项目计划书
  • 江门市建设工程备案网站国产做性直播视频网站
  • 如何做淘宝网网站域名网站域名如何实名认证
  • 网络 网站建设办公重庆微网站开发公司
  • 怎么把网站管理系统工业设计是干啥的
  • 深圳福田专业网站推广建设银行官方网站首页个人登录
  • 常州网络推广网站企业微信怎么注册
  • p2p网站开发费用广州市住房建设部网站
  • 广州seo网站优化培训自己建网站的优势
  • 专业做美食视频的网站用yii框架做的网站如何搭建
  • 路桥网站制作cms 企业网站
  • 六安电子商务网站建设网站建设一般报价多少钱
  • 如何用flashfxp上传网站建筑模板图片高清
  • 做网站怎么在主机上放图片帮助设计的网站
  • 博客网站快速排名ajax wordpress 评论
  • 济源网站建设电话中山市做网站
  • 南昌哪里做网站怎么制作公司自己网站
  • 石家庄有哪些做网站的公司制作单页网站要网址
  • php做电影网站有哪些如何攻击网站
  • 网站建设汇报书 pptdw软件破解版
  • 毕业设计资源网站低价网站建设费用多少