摘要:
HashMap和Hashtable都实现了Map接口,但决定用哪一个之前先要弄清楚它们之间的分别。主要的区别有:线程安全性,同步(synchronization),以及速度。 1、HashMap几乎可以等价于Hashtable,除了HashMap是非synchronized(同步)的,并可以接受nu 阅读全文
posted @ 2019-03-16 10:26
CaiXinCX
阅读(146)
评论(0)
推荐(0)
摘要:
HashMap 是一个用于存储Key-Value 键值对的集合,每一个键值对也叫做Entry。这些个Entry 分散存储在一个数组当中,这个数组就是HashMap 的主干。 HashMap 数组每一个元素的初始值都是Null。 1. Put 方法的原理 调用Put方法的时候发生了什么呢? 比如调用 阅读全文
posted @ 2019-03-16 10:25
CaiXinCX
阅读(492)
评论(0)
推荐(0)
摘要:
主要设计上的变化有以下几点: 1、不采用segment而采用node,锁住node来实现减小锁粒度。 2、 设计了MOVED状态 当resize的中过程中 线程2还在put数据,线程2会帮助resize。 3、使用3个CAS操作来确保node的一些操作的原子性,这种方式代替了锁。 4、sizeCtl 阅读全文
posted @ 2019-03-16 10:24
CaiXinCX
阅读(465)
评论(0)
推荐(0)
摘要:
一、背景: 1、线程不安全的HashMap 因为多线程环境下,使用Hashmap进行put操作会引起死循环,导致CPU利用率接近100%,所以在并发情况下不能使用HashMap。 2、效率低下的HashTable容器 HashTable容器使用synchronized来保证线程安全,但在线程竞争激烈 阅读全文
posted @ 2019-03-16 10:23
CaiXinCX
阅读(181)
评论(0)
推荐(0)
摘要:
1、 Vector、ArrayList都是以数组(是Object类型)的形式存储在内存中,LinkedList则以链表的形式进行存储 2、 如果是jdk6的话,采用Array.of()方法来生成一个新的数组,如果是jdk5.0的话,使用的是System.arraycopy方法(将数组拷贝) 3、 L 阅读全文
posted @ 2019-03-16 10:21
CaiXinCX
阅读(109)
评论(0)
推荐(0)
摘要:
一、JVM性能调优策略 二、性能调优 1、Java线程池(java.util.concurrent.ThreadPoolExecutor) 大多数JVM6上的应用采用的线程池都是JDK自带的线程池,之所以把成熟的Java线程池进行罗嗦说明,是因为该线程池的行为与我们想象的有点出入。Java线程池有几 阅读全文
posted @ 2019-03-16 10:20
CaiXinCX
阅读(196)
评论(0)
推荐(0)
摘要:
8位:Byte(字节型) 16位:short(短整型)、char(字符型) 32位:int(整型)、float(单精度型/浮点型) 64位:long(长整型)、double(双精度型) boolean(布尔类型) 1)四种整数类型(byte、short、int、long): byte:8 位,用于表 阅读全文
posted @ 2019-03-16 10:17
CaiXinCX
阅读(116)
评论(0)
推荐(0)
摘要:
Collection List LinkedList 非同步 ArrayList 非同步,实现了可变大小的元素数组 Vector 同步 Stack Set 不允许有相同的元素 Map HashTable 同步,实现一个key--value映射的哈希表 HashMap 非同步, WeakHashMap 阅读全文
posted @ 2019-03-16 10:15
CaiXinCX
阅读(144)
评论(0)
推荐(0)
摘要:
1)对于==,比较的是值地址是否相等 如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等; 如果作用于引用类型的变量,则比较的是所指向的对象的地址 2)equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同 对于equals方法,注意:equals方法不能作用于基 阅读全文
posted @ 2019-03-16 10:12
CaiXinCX
阅读(323)
评论(0)
推荐(0)

浙公网安备 33010602011771号