java
一代键客
我是疯狂的搜索资料者
展开
-
redis 分布式锁
使用时先 new 一个RedisLock 对象,然后调用加锁方法,由于加锁时可能超时导致加锁失败,所以可以调试isLock()方法检查加锁是否成功,最后调用unLock() 方法释放锁。/** * redis 分布式锁 * @author viruser * */public class RedisLock{ // 请求锁的超时时间(ms) private stati...原创 2018-05-23 15:45:55 · 149 阅读 · 0 评论 -
TreeMap 学习
TreeMap 简介TreeMap 是一个有序的key-value 集合,内部通过红黑树实现;TreeMap 继承了AbstractMap类,所以它是一个key-value集合;TreeMap 实现了NavigableMap接口,而NavigableMap接口继承了SortedMap接口,所以它是一个有序的集合;TreeMap 实现了Cloneable接口,所以它能被克隆;Tr...原创 2018-10-19 16:10:49 · 286 阅读 · 0 评论 -
HashMap在jdk1.7中和1.8中的不同
一、在jdk1.7中,HashMap存储空间模型是:数组加链表(元素是Entry(链表结构)的数组),数组用来存放key的hash值,链表用来存放键值对值,每一个数组元素对应一个链表,数组和链表的元素都是Entry对向。 public V put(K key, V value) { if (table == EMPTY_TABLE) { infl...原创 2018-10-22 10:39:26 · 297 阅读 · 0 评论 -
LinkedHashMap 学习
以下基于JDK 1.7LinkedHashMap 继承 HashMap,所以HashMap 有的特性,LinkedHashMap基本上都有。 LinekdHashMap和HashMap的区别LinkedHashMap是HashMap的子类,实现的原理跟HashMap差不多,唯一的区别就是LinkedHashMap多了一个双向循环链表。 因为有双向循环列表,所以LinkedHashMap能...转载 2018-10-23 11:35:45 · 5463 阅读 · 0 评论 -
ArrayList JDK1.8 源码学习
ArrayList 就是动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了动态的增加和减少元素的方法,继承了AbstractList<E>类,实现了List<E>, RandomAccess, Cloneable, java.io.Serializable 接口。一、静态变量// 默认初始化动态数组的大小private static ...原创 2018-10-29 14:55:05 · 225 阅读 · 0 评论 -
多线程中this、Thread.currentThread() 和 this.currentThread()的区别
结论:Thread.currentThread():获取当前线程的引用,既代码段正在被哪一个线程调用。 this:指当前对象 this.currentThread():与Thread.currentThread()一致,都是调用实验代码:public class CountOperate extends Thread { public CountOperate() {...原创 2018-10-24 16:42:52 · 1471 阅读 · 0 评论 -
LinkedList JDK1.8 源码学习
LinkedList 是一个双向链表,有一个头节点first和尾节点last,继承于AbstractSequentialList,实现了接口 List<E>, Deque<E>, Cloneable, java.io.Serializable。 接口 Deque<E> extends Queue<E>,全名 double...原创 2018-11-06 20:07:11 · 119 阅读 · 0 评论 -
java同时启动多个线程(一)
当我们需要同时启动N个线程时, 可以使用java.util.concurrent.CyclicBarrier 类解决。demo:import java.util.concurrent.BrokenBarrierException;import java.util.concurrent.CyclicBarrier;public class TestCyclicBarrier {...原创 2019-03-11 14:59:51 · 5518 阅读 · 0 评论 -
java同时启动多个线程(二)
当我们需要同时启动N个线程时, 可以使用java.util.concurrent.CountDownLatch 类解决。demo:import java.util.concurrent.CountDownLatch;public class TestCountDownLatch { public static void main(String[] args) { Count...原创 2019-03-11 15:13:58 · 11314 阅读 · 0 评论