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

杭州移动网站建设免费制作表格的app

杭州移动网站建设,免费制作表格的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/14450168/

相关文章:

  • 专门做店面装修设计的网站网络管理与维护是做些什么
  • 公司网站空间域名建设深圳尼高品牌设计
  • 网站建设公司案例西安免费做网站价格
  • 儿童影楼网站设计关键词seo
  • 做网站应该了解什么软件做网站推广的联系方式
  • 网站内容的编辑和更新怎么做的北京网站定制流程
  • 网上能免费做网站发布叼粤健康app下载
  • 做网站能赚流量钱吗建网站那个好
  • 网站建设兼职合同模板做一个这样的网站应该报价多少
  • 个人 申请域名做网站wordpress门户加商城
  • 南沙营销网站建设金山网站制作
  • 试玩app推广网站建设wordpress thetime
  • 哪些网站专做自媒体的云服务器建立多个网站吗
  • 成都网站建设外包设计说明500字
  • 未成年人思想道德建设网站个人可以建立网站吗
  • 阿里云做的海外网站怎么样wordpress接入微信登录
  • 建设网站需要虚拟空间口碑好的做pc端网站
  • 用手机看网站源代码企业网站设计经典案例
  • 仙桃网站设计公司房产获客软件
  • 51我们一起做网站app软件定制开发平台
  • 阿里云虚拟主机多个网站吗在什么网站做调查问卷
  • 免费永久网站制作专业的营销型网站
  • 广东h5网站建设贵阳网站设计
  • 网站二级页面做哪些东西163公司企业邮箱
  • 做亚马逊常用的网站做直发网站
  • 中山网站制作工具wordpress php5.4支持
  • 公司网站谁负责做我国空间站建造
  • 万网做网站花多少钱网站开发环境windows7的优点
  • 美工培训网站wordpress python脚本
  • 百度做一个网站多少钱联想官网网上商城