jdk源码——linkedHashMap——jdk1.7

摘要: LinkedHashMap的定义 public class LinkedHashMap<K,V> extends HashMap<K,V> implements Map<K,V>{ private transient Entry<K,V> header;//头结点 private final boo 阅读全文
posted @ 2018-09-28 17:05 计科wang 阅读(186) 评论(0) 推荐(0) 编辑

jdk源码ConcurrentHashMap——jdk1.7

摘要: 首先做个分析: hashMap,hashTable,ConcurrentHashMap,这三者之间的区别,HashMap是线程不安全的,在多线程的环境下,hashMap的put方法可能引起死循环,于是为了线程安全,出现了hashTable,hashTable解决多线程安全的问题是简单粗暴的加sync 阅读全文
posted @ 2018-09-28 14:16 计科wang 阅读(294) 评论(0) 推荐(0) 编辑

jdk源码hashMap的1.7与1.8的比较

摘要: 1.8链表的定义基本上与1.7相同,但是类名改为Node,但是node实现了Map.Entry接口,实质是一样的 static class Node<K,V> implements Map.Entry<K,V> { 1.8的hash值的算法更加直观一点,就是key的hashcode与无符号右移16位 阅读全文
posted @ 2018-09-27 16:15 计科wang 阅读(261) 评论(0) 推荐(0) 编辑

jdk源码——HashMap

摘要: JDK1.7 从源码上看,HashMap 实现了Map接口 cloneable接口,和序列化接口 public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable{ Hash 阅读全文
posted @ 2018-09-25 21:13 计科wang 阅读(156) 评论(0) 推荐(0) 编辑

jdk源码——LinkedList

摘要: 从源码的定义中,我们可以看出linkedList是实现list接口和deque接口的双端链表 public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, j 阅读全文
posted @ 2018-09-25 15:26 计科wang 阅读(118) 评论(0) 推荐(0) 编辑

单例

摘要: 饿汉式 public class Single{ //立即加载==饿汉式 private static Single single = new Single(); //私有化构造方法 private Single(){ } public static Single getSingle(){ retu 阅读全文
posted @ 2018-09-24 17:15 计科wang 阅读(117) 评论(0) 推荐(0) 编辑

多线程笔记——3

摘要: 线程间的通信 1等待唤醒机制 wait notify是object类的方法,该方法用来将当前线程置入“预执行队列”,并在wait处停止执行直到被唤醒才继续执行 执行wait()方法,线程必须获得该对象的对象级别的锁,否则会抛出IllegalMonitorStateException. wait 方法 阅读全文
posted @ 2018-09-24 16:51 计科wang 阅读(133) 评论(0) 推荐(0) 编辑

多线程笔记——2

摘要: 对象及变量的并发访问 1 Synchronized 同步方法 多线程对同一个对象中的实例变量进行并发访问的时候产生的后果就是脏读,而线程安全就是要同步获取实例变量 2 synchronized 锁是对象锁,两个线程分别访问同一个类的两个不同对象的同一个方法,效果是异步执行的。 3关键字synchro 阅读全文
posted @ 2018-09-24 11:25 计科wang 阅读(102) 评论(0) 推荐(0) 编辑

多线程笔记——1

摘要: 在学习多线程的时候首先我们要清楚一线问题: 1进程:系统分配资源和调度的独立单位,线程: 进程中独立运行的子任务 2多线程的实现方式 集成Thread类和实现Runnable接口 3线程的执行顺序与调用顺序无关的,start()方法会通知“线程规划器”,由它启动一个线程来执行run()方法 4Thr 阅读全文
posted @ 2018-09-24 10:12 计科wang 阅读(133) 评论(0) 推荐(0) 编辑

jdk源码——ArrayList

摘要: ArrayList的初始化,我们可以指定大小也可以不指定大小,默认大小是10, public ArrayList(int initialCapacity) { super(); if (initialCapacity < 0) throw new IllegalArgumentException(" 阅读全文
posted @ 2018-09-17 15:26 计科wang 阅读(104) 评论(0) 推荐(0) 编辑