
JDK
阶前空雨
个人博客网站:http://zhouyu.site
展开
-
JDK8新特性 流Stream
突然看到这段代码,一时没懂啥意思,网上搜了下,记录下来List<Long> ids = list.stream().map(map -> Long.parseLong(map.get("id").toString())).distinct().collect(Collectors.toList());Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据。先将list转化为流,可以对该元素流进行一系列操作,链式调用,顺序不固定,主要方法有:f原创 2020-05-18 17:40:53 · 215 阅读 · 0 评论 -
常量池 StringTable
常量池是 .class文件,存放堆中数据的引用地址,而不是真实的对象,运行时常量池是jvm运行时将常量池中数据放入池中,此时引用地址真正的指向对象而不是.class文件;Stringtable是哈希表(不能扩容),它也叫做串池,用来存储字符串,这3个不是同一个东西,我们需要进行区分String table中存储的并不是String类型的对象,存储的而是指向String对象的索引,真实对象还是存储在堆中jdk1.6中,Stringtable是放在永久代(方法区)中,jvm进行FullGC才会对常量池进..原创 2020-05-18 17:25:39 · 545 阅读 · 0 评论 -
CountDownLatch和线程池
1.CountDownLatch List list = new ArrayList<String>(); for(int i= 0;i<100000;i++){ list.add(String.valueOf(i)); } //System.out.println(list.toString()); int threadnum = list.size() % 200 == 0? li原创 2020-05-12 16:57:17 · 1210 阅读 · 0 评论 -
JDK源码解析 - java.util.concurrent.ConcurrentHashMap
分析这个类前,补充一些相关的基本常识HashMap:JDK8以前是头插法,JDK8后是尾插法HashMap扩容时,可能会导致死循环:如果两个线程同时触发扩容,在移动节点时会导致一个链表中的2个节点相互引用,从而生成环链表 原因,反正我没看懂ConcurrentHashMap的扩容实现:当往hashMap中成功插入一个key/value节点时,有可能触发扩容动作:如果新增节点之后,...原创 2020-04-29 20:03:04 · 527 阅读 · 0 评论 -
JDK源码解析 - java.util.Hashtable
1.构造方法public class Hashtable<K,V> extends Dictionary<K,V> implements Map<K,V>, Cloneable, java.io.Serializable { private static final long serialVersionUID = 14217467595...原创 2020-04-28 21:06:22 · 389 阅读 · 0 评论 -
JDK源码解析 - java.util.HashSet
1.实现接口public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Serializable //继承了AbstractSet接口,实现了Set接口{ static final long serialVersion...原创 2020-04-28 09:48:32 · 325 阅读 · 0 评论 -
JDK源码解析 - java.util.HashMap
1.静态变量 // 6个默认值static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16 右移4位 2的4次方 table数组默认初始容量static final int MAXIMUM_CAPACITY = 1 << 30; //table数组最大容量static final float DEF...原创 2020-04-27 19:45:28 · 310 阅读 · 0 评论 -
JDK源码解析 - java.util.ArrayList
1.实现接口public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable{ private static final long serialVersionUID = 868...原创 2020-04-23 20:37:47 · 613 阅读 · 0 评论 -
JDK源码解析 - java.util.AbstractList
1.实现接口,构造方法public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E> { /** * Sole constructor. (For invocation by subclass constructors, typic...原创 2020-04-14 20:51:40 · 339 阅读 · 0 评论 -
JDK源码解析 - java.lang.ThreadLocal
以下为转载,写的特别好0-0:https://www.jianshu.com/p/3c5d7f09dfbdThreadLocalthreadlocal使用方法很简单static final ThreadLocal<T> sThreadLocal = new ThreadLocal<T>();sThreadLocal.set(...)sThreadLocal.g...转载 2020-04-14 14:44:34 · 480 阅读 · 0 评论 -
JDK源码解析 - java.lang.Thread
1.启动线程的方式子类继承Thread,重写run()方法 * class PrimeThread extends Thread { * long minPrime; * PrimeThread(long minPrime) { * this.minPrime = minPrime; * } * ...原创 2020-04-11 17:33:20 · 499 阅读 · 0 评论 -
JDK源码解析 - java.lang.StringBuffer
1.实现接口/** * Whenever an operation occurs involving a source sequence (such as * appending or inserting from a source sequence), this class synchronizes * only on the string buffer performing the o...原创 2020-04-10 16:01:14 · 174 阅读 · 0 评论 -
JDK源码解析 - java.lang.AbstractStringBuilder
1.实现接口abstract class AbstractStringBuilder implements Appendable, CharSequence {...}StringBuilder和StringBuffer都实现了这个类。Appendable接口有3个append抽象方法,CharSequence接口主要有length,charAt,subSequence,toString4个...原创 2020-04-10 14:32:20 · 299 阅读 · 0 评论 -
JDK源码解析-java.lang.String
1.String实现接口public final class String implements java.io.Serializable, Comparable<String>, CharSequence {....}序列化接口 private static final ObjectStreamField[] serialPersistentFields =...原创 2020-04-09 23:24:11 · 457 阅读 · 0 评论 -
JDK源码解析-java.lang.object
1.registerNatives() private static native void registerNatives(); static { registerNatives(); }首先这是个本地方法,是由其他语言编写的,运行中的Java程序调用本地方法时,虚拟机装载包含这个本地方法的动态库,并调用这个方法。本地方法是联系Java程序和底层主机操...原创 2020-04-07 23:24:46 · 200 阅读 · 0 评论