手写系列
手写一些常见的经典项目
透明的阿尔冯斯
这个作者很懒,什么都没留下…
展开
-
【java】手写一个LRU缓存
LRU是Least Recently Used 的缩写,翻译过来就是“最近最少使用”,也就是说,LRU缓存把最近最少使用的数据移除,让给最新读取的数据。而往往最常读取的,也是读取次数最多的。首先我们定义一个LRU接口public interface LRUCache<K,V> { V get(K key); void put(K key, V value);}1、LinkedHashMap实现public class LRULinkedHashMap<K,V&g原创 2020-11-28 19:47:50 · 360 阅读 · 0 评论 -
【java】手写一个线程池
在手写一个线程池前,我们先参考一下JDK里的线程池是怎么工作的。一、JDK线程池的七大参数1.corePoolSize:线程池中常驻核心线程数2.maximumPoolSize:线程池能够容纳同时执行的最大线程数,必须大于等于13.keepAliveTime:多余的空闲线程的存活时间,当前线程池数量超过corePoolSize时,4.unit:keepAliveTime的单位5.workQueue:任务队列,被提交但尚未被执行的任务6.threadFactory:表示生成线程池中工作线程的线程原创 2020-11-27 00:10:46 · 251 阅读 · 0 评论 -
【java】手写一个阻塞队列
阻塞队列与普通的队列的区别就是当队列为空或者满时处理的逻辑不通,普通队列返回特殊值(比如null,false等等)而阻塞队列是阻塞当前线程直到队列有元素或者不为空。这里手写一个阻塞队列。首先定义一个接口:public interface BlockingQueue<E> { /** * 往队列尾部添加一个元素,当队列满时阻塞当前线程 * @param e */ void put(E e); /** * 从队列首部取走一个元素,原创 2020-11-25 00:31:55 · 1117 阅读 · 0 评论