checked exception 必须try catch 或者继续向上抛出异常,否则编译不能通过
8:Collection体系
10.1HashMap(Java8以前):数组+链表
hash(key.hashCode())%len
HashMap(Java8及以后):数组+链表+红黑树
性能从O(n)提高到O(logn)
10.2
10.3
10.4:
10.5:
10.6:
早期的ConcurrentHashMap:通过分段锁Segment来实现
数据+链表
当前的ConcurrentHashMap:CAS+synchronized使锁更细化
数组+链表+红黑树
10.8:
arrayList 是通过Array.copy进行扩容的hashmap 非线程安全的 延迟加载在首次使用才初始化 static final int TREEIFY_THRESHOLD = 8; static final int UNTREEIFY_THRESHOLD = 6; 两个参数设置红黑树和链表相互转换的阈值 默认负载因子是0.75 扩容:将会创建原来两倍大小的扩容并重新hashConcurrentHashMap线程安全,CAS+同步锁,数组+链表+红黑树 锁的是链表/红黑二叉树的头元素
Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API
核心组件:Channel、Buffers和Selector
Channel与Buffer:基本上所有的IO在NIO都从一个Channel开始。Channel有点像流,数据可以从Channel读到Buffer中,也可以从Buffer 写到Channel中。
JAVA NIO中,Channel的主要实现方法有:FileChannel、DatagramChannel、SocketChannel、ServerSocketChannel
JAVA NIO中,Buffer的主要实现方法有:ByteBuffer、CharBuffer、DoubleBuffer、FloatBuffer、IntBuffer等
Selector :Selector允许单线程处理多个 Channel。例如在一个聊天服务器中,一个应用打开了多个连接(通道),但每个连接的流量都很低,使用Selector就会很方便。如图:
转载于:https://www.cnblogs.com/zyy1688/p/11156912.html
相关资源:25个经典网站源代码