摘要: 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)
摘要: 重载(Overloading) 方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。 重载Overloading是一个类中多态性的一种表现。 Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。 调用方法 阅读全文
posted @ 2019-02-26 20:03 CaiXinCX 阅读(2629) 评论(0) 推荐(0)