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

网站建设制作公司都选万维科技单个网页打不开是什么原因

网站建设制作公司都选万维科技,单个网页打不开是什么原因,西安电商网站,网站开发人员薪资之前谈过高并发编程系列#xff1a; 高并发编程系列#xff1a;4种常用Java线程锁的特点#xff0c;性能比较、使用场景 高并发编程系列#xff1a;CountDownLatch、Semaphore等4大并发工具类详解 高并发编程系列#xff1a;4大JVM性能分析工具详解#xff0c;及内存… 之前谈过高并发编程系列 高并发编程系列4种常用Java线程锁的特点性能比较、使用场景 高并发编程系列CountDownLatch、Semaphore等4大并发工具类详解  高并发编程系列4大JVM性能分析工具详解及内存泄漏分析方案 高并发编程系列ConcurrentHashMap的实现原理(JDK1.7和JDK1.8) Java并发编程系列深入详解Synchronized同步锁的底层实现 今天详细介绍并发容器的实现原理与同步容器的区别等。 并发容器的由来 在Java并发编程中经常听到Java集合类同步容器、并发容器那么他们有哪些具体分类以及各自之间的区别和优劣呢 只有把这些梳理清楚了你才能真正掌握在高并发的环境下正确使用好并发容器我们先从Java集合类同步容器谈起。 1.什么是同步容器 Java的集合容器框架中主要有四大类别List、Set、Queue、Map大家熟知的这些集合类ArrayList、LinkedList、HashMap这些容器都是非线程安全的。 如果有多个线程并发地访问这些容器时就会出现问题。因此在编写程序时在多线程环境下必须要求程序员手动地在任何访问到这些容器的地方进行同步处理这样导致在使用这些容器的时候非常地不方便。 所以Java先提供了同步容器供用户使用。 同步容器可以简单地理解为通过synchronized来实现同步的容器比如Vector、Hashtable以及SynchronizedList等容器。 2.同步容器主要的分类 Vector Stack HashTable Collections.synchronized方法生成 同步容器面临的问题 可以通过查看VectorHashtable等这些同步容器的实现代码可以看到这些容器实现线程安全的方式就是将它们的状态封装起来并在需要同步的方法上加上关键字synchronized。 这样做的代价是削弱了并发性当多个线程共同竞争容器级的锁时吞吐量就会降低。 例如 HashTable只要有一条线程获取了容器的锁之后其他所有的线程访问同步函数都会被阻塞因此同一时刻只能有一条线程访问同步函数。 因此为了解决同步容器的性能问题所以才有了并发容器。 什么是并发容器 java.util.concurrent包中提供了多种并发类容器。 并发类容器是专门针对多线程并发设计的使用了锁分段技术只对操作的位置进行同步操作但是其他没有操作的位置其他线程仍然可以访问提高了程序的吞吐量。 采用了CAS算法和部分代码使用synchronized锁保证线程安全。 并发容器有哪些分类 1.ConcurrentHashMap 对应的非并发容器HashMap 目标代替Hashtable、synchronizedMap支持复合操作 原理JDK6中采用一种更加细粒度的加锁机制Segment“分段锁”JDK8中采用CAS无锁算法。 2.CopyOnWriteArrayList 对应的非并发容器ArrayList 目标代替Vector、synchronizedList 原理利用高并发往往是读多写少的特性对读操作不加锁对写操作先复制一份新的集合在新的集合上面修改然后将新集合赋值给旧的引用并通过volatile 保证其可见性当然写操作的锁是必不可少的了。 3.CopyOnWriteArraySet 对应的非并发容器HashSet 目标代替synchronizedSet 原理基于CopyOnWriteArrayList实现其唯一的不同是在add时调用的是CopyOnWriteArrayList的addIfAbsent方法其遍历当前Object数组如Object数组中已有了当前元素则直接返回如果没有则放入Object数组的尾部并返回。 4.ConcurrentSkipListMap 对应的非并发容器TreeMap 目标代替synchronizedSortedMapTreeMap 原理Skip list跳表是一种可以代替平衡树的数据结构默认是按照Key值升序的。 5.ConcurrentSkipListSet 对应的非并发容器TreeSet 目标代替synchronizedSortedSet 原理内部基于ConcurrentSkipListMap实现 6.ConcurrentLinkedQueue 不会阻塞的队列 对应的非并发容器Queue 原理基于链表实现的FIFO队列LinkedList的并发版本 7.LinkedBlockingQueue、ArrayBlockingQueue、PriorityBlockingQueue 对应的非并发容器BlockingQueue 特点拓展了Queue增加了可阻塞的插入和获取等操作 原理通过ReentrantLock实现线程安全通过Condition实现阻塞和唤醒 实现类 LinkedBlockingQueue基于链表实现的可阻塞的FIFO队列 ArrayBlockingQueue基于数组实现的可阻塞的FIFO队列 PriorityBlockingQueue按优先级排序的队列 ConcurrentHashMap的实现 HashMap,Hashtable与ConcurrentHashMap都是实现的哈希表数据结构在随机读取的时候效率很高。 Hashtable实现同步是利用synchronized关键字进行锁定的其是针对整张哈希表进行锁定的即每次锁住整张表让线程独占在线程安全的背后是巨大的浪费。 ConcurrentHashMap和Hashtable主要区别就是围绕着锁的粒度进行区别以及如何区锁定。 上图中左边是Hashtable的实现方式可以看到锁住整个哈希表而右边则是ConcurrentHashMap的实现方式单独锁住每一个桶segment.ConcurrentHashMap将哈希表分为16个桶默认值诸如get,put,remove等常用操作只锁当前需要用到的桶,而size才锁定整张表。 原来只能一个线程进入现在却能同时接受16个写线程并发进入写线程需要锁定而读线程几乎不受限制。 所以才有了并发性的极大提升。 高并发编程除了并发容器还会涉及到并发工具类:CountDownLatch等后续将详细的介绍并发工具类以及ConcurrentHashMap的底层实现细节不仅要知其然,还要知其所以然这样才能更好的掌握好高并发编程。 你可能也喜欢: Java多线程系列三Java线程池的使用方式及核心运行原理 Java多线程系列(四)4种常用Java线程锁的特点性能比较、使用场景Java多线程系列(八)ConcurrentHashMap的实现原理(JDK1.7和JDK1.8)Java多线程系列一最全面的Java多线程学习概述 Java多线程系列六深入详解Synchronized同步锁的底层实现 Java多线程系列十源码剖析AQS的实现原理
http://wiki.neutronadmin.com/news/416356/

相关文章:

  • 网站设计文稿广州建筑信息平台
  • ps做网站需注意漯河网站建设费用
  • 做钓鱼网站教程学院网站建设 好处
  • 微信小程序制作免费轻站平台平面设计与网页设计培训
  • 济南做网站建设ui设计需要学什么
  • 广东省建设执业资格注册中心官方网站客户资源管理系统
  • 罗泾网站建设网站开发技能介绍
  • 湛江做网站苏州厂商专业的上海网站建设
  • 深圳做微信网站制作wordpress 微论坛主题
  • 万网虚拟主机上传网站wordpress linux 建站教程
  • 网站建设得要素网站制作 合同
  • 门户网站开发公司平台网络运维基础知识
  • 黃冈建设厅官方网站一个vps建两个网站怎么弄数据库
  • 网站建设论文的研究方法wordpress 分类列表
  • 成品在线网站免费入口哈尔滨网站建设优化
  • 网站建设构想公司简介ppt模板免费下载
  • seo网站系统网站开发实用技术相关论文
  • 宿州官方网站建设超详细的wordpress主题
  • 普宁17网站一起做淘宝网站流量的作用
  • 广西柳州做网站房产备案查询系统
  • 黄石做网站要多少钱网站备案 假通信地址
  • 免费 网站 cms怎么选择合适的网站开发公司
  • 有哪些做副业的网站营销网站建设哪里好薇
  • 展示型网站建设方案书赣州章贡区二手房出售信息
  • 北京网站制作与建设公司wordpress首页文章数量
  • 伍佰亿搜索引擎网站系统免费自助建站服务
  • 怎么做网站登陆战怎么做静态网页
  • 千万不能 网站php做网站有哪些好处
  • 网站如何盈利流量费网站开发人员上级主管
  • 做毕业设计网站的问题与展望如何上传ftp网站程序