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

网站建设 公司 天津最珠海app下载官网

网站建设 公司 天津,最珠海app下载官网,网站开发工单,一流专业建设规划文章目录 1. 多线程环境使用ArrayList1.1 自己使用同步机制1.2 Collections.synchronizedList(new ArrayList);1.3 使用 CopyOnWriteArrayList 2. 多线程使用队列3. 多线程环境使用哈希表3.1 HashTable3.2 ConcurrentHashMap3.3 Hashtable和HashMap、ConcurrentHashMap 之间的区… 文章目录 1. 多线程环境使用ArrayList1.1 自己使用同步机制1.2 Collections.synchronizedList(new ArrayList);1.3 使用 CopyOnWriteArrayList 2. 多线程使用队列3. 多线程环境使用哈希表3.1 HashTable3.2 ConcurrentHashMap3.3 Hashtable和HashMap、ConcurrentHashMap 之间的区别? 学到现在我们会发现原先学的大多集合类在多线程环境中使用并不是安全的在并发编程中使用起来会有诸多问题那么下面我们就要学习新的集合类和并发集合。 PSVector, Stack, HashTable, 是线程安全的但不建议用这是Java中旧的集合类它们在性能、可读性、维护性等方面已经不如现在新的集合类和并发集合。 1. 多线程环境使用ArrayList 1.1 自己使用同步机制 自己使用同步机制就是为ArrayList加锁我们可以使用synchronized或ReentrantLock。 1.2 Collections.synchronizedList(new ArrayList); synchronizedList 是标准库提供的一个基于 synchronized 进行线程同步的 List. synchronizedList 的关键操作上都带有 synchronized实现线程安全。 1.3 使用 CopyOnWriteArrayList CopyOnWrite容器即写时复制的容器。 当我们往一个容器添加元素的时候不直接往当前容器添加而是先将当前容器进行Copy复制出一个新的容器然后新的容器里添加元素添加完元素之后再将原容器的引用指向新的容器。 这样做的好处是我们可以对CopyOnWrite容器进行并发的读而不需要加锁因为当前容器不会添加任何元素。 所以CopyOnWrite容器也是一种读写分离的思想读和写不同的容器。 优点 在读多写少的场景下, 性能很高, 不需要加锁竞争。 缺点 占用内存较多。新写的数据不能被第一时间读取到。 2. 多线程使用队列 ArrayBlockingQueue 基于数组实现的阻塞队列LinkedBlockingQueue 基于链表实现的阻塞队列PriorityBlockingQueue 基于堆实现的带优先级的阻塞队列TransferQueue 最多只包含一个元素的阻塞队列 3. 多线程环境使用哈希表 HashMap本身不是线程安全的。 并发编程中可以使用HashTable和ConcurrentHashMap。 3.1 HashTable HashTable实现线程安全就是把关键的方法都加上锁例如get(),put()方法这个时候当多个线程访问HashTable就会发生锁冲突。 其实就相当于给HashTable对象进行了加锁这个时候也会造成许多的弊端例如 size属性也被加锁那么多线程同时访问size的速度就会变慢降低了效率。当发生扩容操作时就由该线程完成整个扩容过程. 这个过程会涉及到大量的元素拷贝, 效率会非常低。 3.2 ConcurrentHashMap 相比HashTableConcurrentHashMap就进行了优化只对写操作进行加锁锁的不是整个对象而是‘桶锁’以每个链表的头节点作为锁那么只有多线程同时访问一个桶时才会锁冲突读并没有加锁但是使用了volatile保证内存的可见性那么多线程读时效率就会大大提升。 充分利用 CAS 特性 比如 size 属性通过 CAS 来更新. 避免出现重量级锁的情况。 优化了扩容方式: 化整为零 发现需要扩容的线程, 只需要创建一个新的数组, 同时只搬几个元素过去 扩容期间, 新老数组同时存在后续每个来操作 ConcurrentHashMap 的线程, 都会参与搬家的过程. 每个操作负责搬运一小部分元素 搬完最后一个元素再把老数组删掉。这个期间, 插入只往新数组加这个期间, 查找需要同时查新数组和老数组。 3.3 Hashtable和HashMap、ConcurrentHashMap 之间的区别? HashMap: 线程不安全. key 允许为 null Hashtable: 线程安全. 使用 synchronized 锁 Hashtable 对象, 效率较低. key 不允许为 null. ConcurrentHashMap: 线程安全. 使用 synchronized 锁每个链表头结点, 锁冲突概率低, 充分利用CAS 机制. 优化了扩容方式. key 不允许为 null
http://www.zqtcl.cn/news/218458/

相关文章:

  • 南通网站seo网页制作图片轮播
  • 高端品牌网站建设哪家好中医网站模板
  • 怎么做多语言网站图片添加文字在线制作
  • js特效演示网站wordpress本地视频
  • 徐州做网站哪个好上海国际人才网
  • 黑龙江省城乡和住房建设厅网站首页公司营业执照查询
  • 锦州北京网站建设支付公司网站建设会计分录
  • 泉州做网站优化价格软件公众号开发
  • 商丘旅游网站的建设攀枝花城市建设网站
  • 网站主页设计素材一条龙做网站
  • 咖啡店网站首页怎么做163邮箱注册
  • 网站开发开源程序网站建设及推广销售话术
  • 门户网站和官网的区别美间在线设计平台
  • 淮南制作网站游戏代理哪个平台正规
  • seo网站推广软件 快排手机网页小游戏
  • 上海免费网站建设品牌长沙com建站网站设计
  • 大网站成本品牌设计风格
  • 电大形考任在哪个网站做湖南seo推广服务
  • dede网站 异步生成wordpress 页面新建
  • 郑州网站制作网页网站优化我自己可以做吗
  • 合肥做网站的公司百度做兼职去哪个网站
  • 重庆市城市建设规划官方网站一款app从开发到上线的流程
  • 微网站开发难吗登录qq网页版
  • 网站不备案能解析吗网站开发项目中职责
  • 三优科技 网站开发网站开发实训报告总结
  • 离线推广网站规划书常用的网站都有哪些
  • 成都 视频网站建设网站邮件推送
  • 深圳均安网站制作温州网站优化案例
  • 做网站需要哪些流程网站建设中项目经理的职责
  • 专业低价建设微网站微商城怎么样在wordpress上添加播放视频