摘要: Java并发编程:并发容器之CopyOnWriteArrayList(转载) 原文链接: http://ifeve.com/java-copy-on-write/ Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个 阅读全文
posted @ 2018-08-08 15:29 zhangniuniu 阅读(119) 评论(0) 推荐(0)
摘要: Java并发编程:同步容器 为了方便编写出线程安全的程序,Java里面提供了一些线程安全类和并发工具,比如:同步容器、并发容器、阻塞队列、Synchronizer(比如CountDownLatch)。今天我们就来讨论下同步容器。 以下是本文的目录大纲: 一.为什么会出现同步容器? 二.Java中的同 阅读全文
posted @ 2018-08-08 14:36 zhangniuniu 阅读(107) 评论(0) 推荐(0)
摘要: Java并发编程:Lock 在上一篇文章中我们讲到了如何使用关键字synchronized来实现同步访问。本文我们继续来探讨这个问题,从Java 5之后,在java.util.concurrent.locks包下提供了另外一种方式来实现同步访问,那就是Lock。 也许有朋友会问,既然都可以通过syn 阅读全文
posted @ 2018-08-08 14:34 zhangniuniu 阅读(120) 评论(0) 推荐(0)
摘要: Java并发编程:synchronized 虽然多线程编程极大地提高了效率,但是也会带来一定的隐患。比如说两个线程同时往一个数据库表中插入不重复的数据,就可能会导致数据库中插入了相同的数据。今天我们就来一起讨论下线程安全问题,以及Java中提供了什么机制来解决线程安全问题。 以下是本文的目录大纲: 阅读全文
posted @ 2018-08-08 14:33 zhangniuniu 阅读(114) 评论(0) 推荐(0)
摘要: 一、出现背景 1、线程不安全的HashMap 因为多线程环境下,使用Hashmap进行put操作会引起死循环,导致CPU利用率接近100%,所以在并发情况下不能使用HashMap。 2、效率低下的HashTable容器 HashTable容器使用synchronized来保证线程安全,但在线程竞争激 阅读全文
posted @ 2018-08-08 13:41 zhangniuniu 阅读(223) 评论(0) 推荐(0)
摘要: 一、HashMap概述 在JDK1.8之前,HashMap采用数组+链表实现,即使用链表处理冲突,同一hash值的节点都存储在一个链表里。但是当位于一个桶中的元素较多,即hash值相等的元素较多时,通过key值依次查找的效率较低。而JDK1.8中,HashMap采用数组+链表+红黑树实现,当链表长度 阅读全文
posted @ 2018-08-08 10:23 zhangniuniu 阅读(166) 评论(0) 推荐(0)
摘要: 一、集合框架图 简化图: 说明:对于以上的框架图有如下几点说明 1.所有集合类都位于java.util包下。Java的集合类主要由两个接口派生而出:Collection和Map,Collection和Map是Java集合框架的根接口,这两个接口又包含了一些子接口或实现类。2. 集合接口:6个接口(短 阅读全文
posted @ 2018-08-08 10:22 zhangniuniu 阅读(141) 评论(0) 推荐(0)
摘要: 1.HashSet概述: HashSet实现Set接口,由哈希表(实际上是一个HashMap实例)支持。它不保证set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用null元素。HashSet中不允许有重复元素,这是因为HashSet是基于HashMap实现的,HashSet中的元素都存放 阅读全文
posted @ 2018-08-08 10:20 zhangniuniu 阅读(291) 评论(0) 推荐(1)
摘要: 一、初识LinkedHashMap 上篇文章讲了HashMap。HashMap是一种非常常见、非常有用的集合,但在多线程情况下使用不当会有线程安全问题。 大多数情况下,只要不涉及线程安全问题,Map基本都可以使用HashMap,不过HashMap有一个问题,就是迭代HashMap的顺序并不是Hash 阅读全文
posted @ 2018-08-07 16:55 zhangniuniu 阅读(239) 评论(0) 推荐(0)
摘要: 1. HashMap概述: HashMap是基于哈希表的Map接口的非同步实现(Hashtable跟HashMap很像,唯一的区别是Hashtalbe中的方法是线程安全的,也就是同步的)。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不 阅读全文
posted @ 2018-08-07 16:34 zhangniuniu 阅读(144) 评论(0) 推荐(0)