![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
源码学习
小楼东风细雨
计算机系
展开
-
Java线程池原理(多线程)
一、JDK四种线程池1、ExecutorService .newSingleThreadExecutor() //创建一个只有单一线程的线程池,全部任务都按顺序执行,源码如下 /** * Creates an Executor that uses a single worker thread operating * off an unbounded queue.原创 2016-11-03 10:04:32 · 538 阅读 · 0 评论 -
Why are Thread.stop, Thread.suspend and Thread.resume Deprecated?(源码学习)
一、Thread.stopWhy is Thread.stop deprecated?Because it is inherently unsafe. Stopping a thread causes it to unlock all the monitors that it has locked. (The monitors are unlocked as the Threa原创 2016-11-07 11:19:33 · 1045 阅读 · 0 评论 -
newScheduledThreadPool延时任务线程池,实现原理
Excutors的newScheduleThreadPool程序结构,我们在构造ThreadPoolExcute时,Queue队列使用了DelayedWorkQueue,这是一个可延时执行阻塞任务的队列,Delayed元素的一个无界阻塞队列,只有在延迟期满时才能从中提取元素。该队列的头部是延迟期满后保存时间最长的Delayed元素。如果延迟都还没有期满,则队列没有头部,并且poll将返回null。condition的定义Condition available = lock.newCondition();(n原创 2016-11-09 10:29:29 · 14073 阅读 · 1 评论 -
TreeMap原理(源码学习)
TreeMap是一种实现了有序的Map类型。TreeMap基于红黑树原理实现。TreeMap是线程不安全的。TreeMap实现了 NavigableMap接口支持导航方法,TreeMap继承自AbstractMap。put方法原理1、判断有没有root节点。没有则创建一个root(节点用new Entry)表示。modCount++2、定义一个父节点pare原创 2016-10-31 17:57:46 · 504 阅读 · 0 评论 -
java.lang.Number家族(源码学习)
java.lang.Number这个基础类,看似貌不惊人,其实在java数字类型生态系统中很重要。上图看下他的子类家族 基本涵盖了我们常用的几个数字类型的封装类,Byte、Double、Float、Integer、Long、Short,还有Atomic家族,AtomicDouble、AtomicInteger、AtomicLong再看看Number类中的方法public abstract原创 2016-11-01 10:24:29 · 2244 阅读 · 0 评论 -
ThreadPoolExcute运行原理(源码学习)
一、ThreadPoolExcute类主要变量shutdownPerm:权限检查使用runState:运行状态,对应有RUNNING 0、SHUTDOWN 1、STOP 2、TERMINATED 3BlockingQueue workQueue :任务队列ReentrantLock mainLock:可重入锁Condition termination=mainL原创 2016-11-04 18:06:57 · 1638 阅读 · 0 评论 -
PriorityQueue优先队列实现原理
一、什么是优先队列 优先队列不是按照普通对象先进先出原FIFO则进行数据操作,其中的元素有优先级属性,优先级高的元素先出队。本文提到的PriorityQueue队列,是基于最小堆原理实现。二、什么是最小堆 最小堆是一个完全二叉树,所谓的完全二叉树是一种没有空节点的二叉树。 最小堆的完全二叉树有一个特性是根节点必定是最小节点,子女节点一定大于其父节点。还有一个原创 2016-11-17 20:02:33 · 13467 阅读 · 2 评论