CountDownLatch ,juc下的同步工具类,简称闭锁。它允许一条或者多条线程等待其他一条或者多条线程执行完成后执行。 CountDownLatch 是通过一个计数器...
CountDownLatch ,juc下的同步工具类,简称闭锁。它允许一条或者多条线程等待其他一条或者多条线程执行完成后执行。 CountDownLatch 是通过一个计数器...
CyclicBarrier,juc下的同步工具类,简称循环栅栏。 让一组线程同时达到一个屏障(同步点)时被阻塞,直到最后一条线程达到屏障时,所有在屏障前阻塞等待的线程都会被唤...
Semaphore,juc下的同步工具类,简称计数信号量。常用于控制同时访问共享资源的线程数量,和Synchronized,ReentrantLock不同,这些都是独占锁,每...
对于正常的链表来说,如果需要查找某个数据时,需要从头到尾遍历链表,效率比较低。而跳表就同时维护了多个链表,并且这些链表是分层的,用来快速查找数据。 最底层的链表维护了跳表内所...
线程安全的阻塞队列,用来处理 生产者-消费者 问题。当队列容器满时,生产者线程被阻塞直到队列未满。当队列容器为空时,消费者线程阻塞直到队列非空。 主要介绍BlockingQu...
java 提供的线程安全queue队列分两种,一种是阻塞队列,类似实现BlockingQueue接口的类,使用加锁方式实现。另外一种是非阻塞队列,使用CAS方式实现,类似Co...
CopyOnWriteArrayList, CopyOnWrite 的 ArrayList,按名字理解就是 在写ArrayList时复制,即每次会使容器发生变化,调用add ...
R-B Tree,成为红黑树,每个节点上都有存储表示节点颜色的标记 大概了解一下的,只是简单介绍一下红黑树特点,不做树的旋转等操作分析。具体代码可以研究jdk1.8中Hash...
1. 拉链法 jdk1.8 中HashMap,ConcurrentHashMap都是采用这个方法,使用链表来保存发生hash冲突的key,即不同的key有一样的hash值,将...
在多线程环境下,HashMap不符合使用场景,因为不是线程安全的,而如果使用Collections.synchronizedMap()来产生的Map又是一个使用全局锁来进行同...
HashMap 实现Map接口,用来存放键值对,是java常用的集合之一。 jdk1.8之前是由数组+链表 来实现,链表是为了解决hash冲突而存在的(拉链法)。jdk1.8...
ArrayList 和 LinkedList 都继承AbstractList并实现List接口,都是java容器集合中的一部分存储的元素都是有序的,可以重复的。 ArrayL...
LinkedList底层使用双向链表来实现,其中每个节点的数据如下,有数据项,前驱指针,后继指针三个元素 双向链表和双向循环链表的区别双向循环链表的尾元素的前驱指针指向头元素...
这里主要解决的是log配置文件引起的时间不一致问题其中是因为配置日志输出格式时使用了这种配法引起的 逗号分隔两部分配置,其中前面第一个配置是时间格式 后面第二个配置是时区的配...
在java中,可以使用 SimpleDateFormat 日期格式化类来对日期或者时间进行格式化,但在多线程环境下使用要注意线程安全问题。以下代码都是基于JDK1.8 源码文...