![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
Listener_code
一心写码,吾心向西
展开
-
java实现消息队列以及延迟消息(队列DelayQueue)
1.java实现延迟消息(队列DelayQueue)DelayQueue是一个支持延时获取元素的无界阻塞队列。队列使用PriorityQueue来实现。队列中的元素必须实现Delayed接口,在创建元素时可以指定多久才能从队列中获取当前元素。只有在延迟期满时才能从队列中提取元素。缓存系统的设计:这里使用DelayQueue保存缓存元素的有效期,一个线程(生产者)设置失效实现循环添加消息,使用一个线程(消费者)循环查询DelayQueue,一旦能从DelayQueue中获取元素时,表示缓存有效期到了原创 2021-02-26 10:11:22 · 2162 阅读 · 5 评论 -
HashMap学习篇put()与resize()的扩容机制(JDk1.8)
HashMap学习篇resize()的扩容机制(JDk1.8)先提一下HashMap的底层数据结构为数组+链表+红黑树。1.数据初始化 //将之前的数组的数据保存出来 Node<K,V>[] oldTab = table; //获取之前保存数据的长度,防止未初始化报错 int oldCap = (oldTab == null) ? 0 : oldTab.length; //获取之前扩容临界值(capacity*l原创 2020-05-28 17:23:08 · 527 阅读 · 0 评论 -
JAVA使用 Atomic,Unsafe实现自旋锁(可重入锁)
JAVA使用 Atomic,Unsafe实现自旋锁(可重入)自旋锁(spinlock,忙等锁):是指当一个线程在获取锁的时候,如果锁已经被其它线程获取,那么该线程将循环等待,然后不断的判断锁是否能够被成功获取,直到获取到锁才会退出循环,在多线程情况下可能引起CPU升高,甚至导致系统死锁1.Atomic实现(可重入)import lombok.extern.slf4j.Slf4j;import java.util.concurrent.Executors;import java.util.con原创 2021-03-01 14:13:42 · 540 阅读 · 0 评论