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

外包网站价格wordpress文章页添加字段

外包网站价格,wordpress文章页添加字段,如何制作网页网站,百度一下你就知道首页并发容器 什么是并发容器?同步容器:并发容器: ConcurrentHashMap结构图JDK1.7结构图JDK1.8结构图 CopyOnWriteArrayList实现原理 并发队列阻塞队列ArrayBlockingQueue 转自极客时间 什么是并发容器? 在JUC包中#xff0c;有一大部分是关于并发容器的#xff0c;如Concurr… 并发容器 什么是并发容器?同步容器:并发容器: ConcurrentHashMap结构图JDK1.7结构图JDK1.8结构图 CopyOnWriteArrayList实现原理 并发队列阻塞队列ArrayBlockingQueue 转自极客时间 什么是并发容器? 在JUC包中有一大部分是关于并发容器的如ConcurrentHashMapConcurrentSkipListMap CopyOnWriteArrayList及阻塞队列。这里将介绍使用频率、面试中出现频繁的最高的 ConcurrentHashMap和阻塞队列。 注意:这里说到的容器概念相当于我们理解中的集合的概念。 同步容器: Java中的集合主要分为四大类:List、Map、Set和Queue但是并不是所有集合都是线程安全的。比 如我们经常使用的ArrayListHashMapHashSet就不是线程安全的。 早期的JDK1.0中的就提供了线程安全的集合包括VectorStack和Hashtable。此外还有在JDK1.2中增 加的Collections中内部SynchronizedXxx类它们也是线程安全的集合可以由对应 Collections.synchronizedXxx工厂方法创建。这些类实现线程安全的方式都是一样的:都是基于 synchronized这个同步关键字实现的对每个公有方法都进行了同步保证每次只有一个线程能访问集 合所以它们被称为线程安全的集合(同步容器)。 并发容器: 在JDK1.5之前JDK提供的线程安全的类都是同步集合容器。同步容器都是线程安全的但是所有线程 对容器只能串行访问性能很差。在JDK1.5之后引入的JUC并发包提供的更多类型的并发容器在性 能上做了很多改进优化可以用来替代同步容器。它们都是针对多线程并发访问来进行设计的我们称 它们为并发容器。 并发容器依然可以归属到我们提到的四大类:List、Map、Set 和 Queue。 这里我总结了一下它们特性和使用场景: List容器: Vector:使用synchronized同步锁数据具有强一致性。适合于对数据有强一致性要求的场 景但性能较差。 CopyOnWriteArrayList:底层使用数组存储数据使用复制副本实现有锁写操作不能保 证强一致性。适合于读多写少允许读写数据短暂不一致的高并发场景。Map容器 Hashtable:使用synchronized同步锁数据具有强一致性。适合于对数据有强一致性要求的 场景但性能较差。 ConcurrentHashMap:基于数组链表红黑树实现写操作时通过synchronized同步锁将 HashEntry作为锁的粒度支持一定程度的并发写具有弱一致性。适合于存储数据量较小读 多写少且不要求强一致性的高并发场景。 ConcurrentSkipListMap:基于跳表实现的有序Map使用CAS实现无锁化读写具有弱一致 性。适合于存储数据量大读写都比较频繁对数据不要求强一致性的高并发场景。Set容器 CopyOnWriteArraySet:底层使用数组存储数据使用复制副本实现有锁写操作不能保证 强一致性。适合于读多写少允许读写数据短暂不一致的场景。 ConcurrentSkipListSet:基于跳表实现的有序Set使用CAS实现无锁化读写具有弱一致 性。适合于存储数据量大读写都比较频繁对数据不要求强一致性的高并发场景。 ConcurrentHashMap 结构图 JDK1.7结构图 Java7中的ConcurrentHashMap最外层是多个segment每个segment的底层数据结构与HashMap类 似仍然是数组和链表组成。 每个segment独立上ReentrantLock锁每个segment之间互不影响提高并发效率。 默认有16个segment最多可以同时支持16个线程并发写(操作分别分布在不同的Segment上)。这个 默认值可以在初始化时设置但一旦初始化以后就不可以再扩容了。 JDK1.8结构图 ConcurrentHashMap是一个存储 key/value 对的容器并且是线程安全的。 改进一: 取消segments字段直接采用transient volatile HashEntryK,V[] table保存数据采用 table数组元素作为锁从而实现了对每一行数据进行加锁进一步减少并发冲突的概率。 改进二: 将原先table数组单向链表的数据结构变更为table数组单向链表红黑树的结构。查询 更快 CopyOnWriteArrayList 实现原理 CopyOnWrite 思想:是平时查询的时候都不需要加锁随便访问只有在更新的时候才会从原来的 数据复制一个副本出来然后修改这个副本最后把原数据替换成当前的副本。修改操作的同时读操 作不会被阻塞而是继续读取旧的数据。这点要跟读写锁区分一下。 public class Demo15CopyOnWriteArrayList {public static void main(String[] args) {//1、初始化CopyOnWriteArrayListListInteger tempList Arrays.asList(new Integer [] {1,2});CopyOnWriteArrayListInteger copyList new CopyOnWriteArrayList(tempList);ThreadLocal tl new ThreadLocal();//2、模拟多线程对list进行读和写ExecutorService executorService Executors.newFixedThreadPool(10);executorService.execute(new ReadThread(copyList));executorService.execute(new WriteThread(copyList));executorService.execute(new WriteThread(copyList));executorService.execute(new WriteThread(copyList));executorService.execute(new ReadThread(copyList));executorService.execute(new WriteThread(copyList));executorService.execute(new ReadThread(copyList));executorService.execute(new WriteThread(copyList));try {TimeUnit.SECONDS.sleep(5);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println(copyList size:copyList.size());executorService.shutdown();} }class ReadThread implements Runnable {private ListInteger list;public ReadThread(ListInteger list) {this.list list;}Overridepublic void run() {System.out.print(size:list.size(),::);for (Integer ele : list) {System.out.print(ele ,);}System.out.println();} }class WriteThread implements Runnable {private ListInteger list;public WriteThread(ListInteger list) {this.list list;}Overridepublic void run() {this.list.add(9);} } 并发队列 阻塞队列 ArrayBlockingQueue 有界可以指定容量 公平:可以指定是否需要保证公平如果想要保证公平则等待最长时间的线程会被优先处理不过会带来一定的性能损耗。 场景:有10个面试者只有1个面试官大厅有3个位子让面试者休息每个人面试时间10秒模拟所有 人面试的场景。 /*** 案例有10个面试者只有1个面试官大厅有3个位子让面试者休息每个人面试时间10秒模拟所有人面试的场景。*/ public class Demo16ArrayBlockingQueue {static ArrayBlockingQueueString queue new ArrayBlockingQueueString(3);public static void main(String[] args) {Interviewer r1 new Interviewer(queue);//面试官Engineers e2 new Engineers(queue);//程序员们new Thread(r1).start();new Thread(e2).start();} }class Interviewer implements Runnable {BlockingQueueString queue;public Interviewer(BlockingQueue queue) {this.queue queue;}Overridepublic void run() {System.out.println(面试官我准备好了可以开始面试);String msg;try {while(!(msg queue.take()).equals(stop)){System.out.println(msg 面试开始...);TimeUnit.SECONDS.sleep(10);//面试10sSystem.out.println(msg 面试-结束...);}System.out.println(所有候选人都结束了);} catch (InterruptedException e) {e.printStackTrace();}} }class Engineers implements Runnable {BlockingQueueString queue;public Engineers(BlockingQueue queue) {this.queue queue;}Overridepublic void run() {for (int i 1; i 10; i) {String candidate 程序员 i;try {queue.put(candidate);System.out.println(candidate 就坐等待面试~);} catch (InterruptedException e) {e.printStackTrace();}}try {queue.put(stop);} catch (InterruptedException e) {e.printStackTrace();}} }
http://www.hkea.cn/news/14390675/

相关文章:

  • 建设网站有哪些术语php 网站反盗链
  • kuake自助建站系统官网运动网站源码
  • 与安网站建设旅游网站反链怎么做
  • 域名和空间网站wordpress 防火墙
  • 网站建设与维护专业实训室白云网站建设公
  • 自动采集网站php源码企业网站建设可行性
  • 长春网站公司哪家好女儿考试没圈关键词
  • 展览设计seo推广营销公司
  • 长春做网站wang展示型企业网站制作费用
  • 免费的网站推广在线推广wordpress 汽车 模板
  • 不用源码做网站网址大全123
  • 租网站需要多少钱网站的不同类
  • 网站制作 广州苏州设计公司排名前十
  • 静态网页有什么特点青岛网络工程优化
  • 怎么做点图片链接网站系部 网站建设方案
  • 不备案的网站能打开吗泰安市诺盾网络有限公司
  • 深圳设计网站排行做装修的网站
  • 网络推广学校wordpress的seo作用
  • 贵州网站建设营销公司阿里巴巴网站服务内容
  • 大专学网站开发与运营外包公司有前途吗
  • 网站建设课程小结网站开发学什么语言好
  • 商城网站设计公司怎么用wordpress搭建免费网站
  • 要建网站网站群 优点
  • 湖南网站建设企业大型的网站建设公司
  • 北京 工业网站建设公司价格做钓鱼网站会被抓吗
  • 网站建设的费用预算对网络营销的认识
  • 大名做网站京津冀协同发展9周年
  • 网站开发能用react吗宁波外贸公司注册流程
  • 建站宝盒手机版下载页面模板怎么修改
  • 济南住宅与房地产信息网官方网站贵阳高端网站开发制作