![](https://img-blog.csdnimg.cn/20190927151026427.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
java部分类源码
文章平均质量分 66
无
lolxxs
这个作者很懒,什么都没留下…
展开
-
Java ExceptionInInitializerError类
ExceptionInInitializerError类重点抛出ExceptionInInitializerError错误表示静态初始值设定项中发生意外异常。即计算静态初始值设定项或静态变量初始值设定项期间发生异常。ExceptionInInitializerError类源码package java.lang;/** * Signals that an unexpected exception has occurred in a static initializer. * An <cod原创 2021-11-16 20:56:52 · 678 阅读 · 0 评论 -
Java LinkageError类
LinkageError源码重点LinkageError是一个Error,继承自Error类表示不可恢复异常,LinkageError的子类表示一个类对另一个类有依赖关系,且父类在编译子类之后发生了不兼容的变化时(父类发生了变化),会抛出该错误ErrorLinkageError源码package java.lang;/** * Subclasses of {@code LinkageError} indicate that a class has * some dependency on an原创 2021-11-16 20:53:45 · 1091 阅读 · 0 评论 -
Java Observer接口总结 观察者模式中的观察者 发布订阅模式中的订阅者
Observer接口重点Observer接口是观察者模式中的观察者,发布订阅模式中的订阅者,Observer接口是一个函数式接口,里面只有一个 update方法,在被观察者想要通知观察者时会调用该update方法达到通知观察者的目的Observable是被观察者,arg也是观察者调用该方法传过来的参数,Observable 可以看我这篇文章 ObservableObserver接口方法方法名作用void update(Observable o, Object arg)在要被原创 2021-11-07 12:00:57 · 240 阅读 · 0 评论 -
Java Observable类总结 观察者模式中的被观察者 发布订阅模式中的发布者
文章目录Observable类重点Observable类方法Observable类实现Observable类属性Observable类操作addObserver方法deleteObserver方法deleteObservers方法notifyObservers方法notifyObservers(Object arg)方法clearChanged方法Observable类重点Observable类是被观察者,也是发布者,其观察者是Observer,Observer是一个函数式接口,可以看我这篇文章 Ob原创 2021-11-07 11:54:48 · 478 阅读 · 0 评论 -
Java NavigableMap接口总结 有序Map接口SortedMap接口的扩展
NavigableMap接口源码重点NavigableMap接口继承自SortedMap接口,提供有序Map接口的扩展,提供了更为细致的导航方法,SortedMap源码可以看我这篇文章 SortedMapSortedMap接口继承自Map接口,所以NavigableMap接口也可以说是一种Map接口NavigableMap接口提供了四类方法分别是根据给定键key查找集合Map中的键根据给定键key查找集合Map中的键值对Entry获取集合Map中的键最小或最大的键值对有序Map集合处理方法原创 2021-11-02 23:56:34 · 551 阅读 · 0 评论 -
Java SortedMap接口总结 有序Map要实现的接口规范
SortedMap接口源码重点SortedMap接口继承自Map接口,自然具有Map接口定义的其他方法,Map源码可以看我这篇文章 Map实现SortedMap接口表明该Map的键是根据排序规则有序的,SortedMap接口方法的 comparator()方法可以返回排序Map的排序规则,返回的Comparator是一个比较器,里面有一个虚方法compare(T o1, T o2) ,默认意思是如果compare(T o1, T o2) 返回值大于0,表示 o1 - o2 > 0,Compara原创 2021-11-01 22:46:00 · 627 阅读 · 0 评论 -
Java AbstractMap虚拟类总结 从模板方法层面去理解
文章目录AbstractMap虚拟类源码总结AbstractMap虚拟类实现子类需要实现的方法Object重写方法hashCode方法toString方法equals方法clone方法查询操作size方法get方法containsKey方法containsValue方法修改操作put方法remove方法批量操作putAll方法clear方法获取集合视图keySet方法values方法静态方法eq方法AbstractMap虚拟类源码总结AbstractMap虚拟类实现子类需要实现的方法方法名原创 2021-11-01 19:27:40 · 496 阅读 · 0 评论 -
Java Map接口总结 从虚方法(子类需要实现的方法) 默认方法 静态方法层面去理解
文章目录Map接口源码重点Map接口实现子类需要实现的方法默认方法(default)getOrDefault方法putIfAbsent方法remove方法boolean replace方法V replace方法forEach方法replaceAll方法compute方法computeIfAbsent方法computeIfPresent方法merge方法静态方法(static)of方法of(K k1, V v1)方法ofEntries方法entry方法Entry子接口实现子类需要实现的方法静态方法compar原创 2021-10-31 20:49:36 · 765 阅读 · 1 评论 -
Java BiConsumer源码总结 BiConsumer接口注释翻译和解析中英文对照版
BiConsumer函数式接口源码重点1.BiConsume是一个函数式接口,里面只有一个需要实现的方法是 void accept(T t, U u),表示一个接受两个输入参数但不返回结果的操作,通常用于处理键值对,key是一个参数,值是一个参数,BiConsumer函数式接口与Consumer函数式接口的区别是Consumer的void accept(T t),表示一个接受单个输入参数但不返回结果的操作,Consumer源码可以看我这篇文章 Consumer2.BiConsumer<T, U&g原创 2021-10-31 16:44:22 · 1603 阅读 · 0 评论 -
Java LinkedBlockingQueue类总结 从数据结构层面理解LinkedBlockingQueue
文章目录LinkedBlockingQueue类源码重点LinkedBlockingQueue类的实现LinkedBlockingQueue类的数据结构Node节点LinkedBlockingQueue类入队列操作offer操作enqueue操作signalNotEmptyoffer(E e, long timeout, TimeUnit unit)操作put操作出队列操作poll操作dequeue操作signalNotFull操作poll(long timeout, TimeUnit unit)操作tak原创 2021-10-29 23:30:47 · 762 阅读 · 0 评论 -
Java Spliterator接口总结 Spliterator接口注释翻译和解析中英文对照版
Spliterator接口重点Spliterator接口是迭代器Iterator改版,只不过Spliterator可以并行的遍历元素,但是Spliterator不是线程安全的,并行的关键在于 trySplit方法,可以将一个Spliterator拆分为两个Spliterator,每个Spliterator元素不一样,两个Spliterator合起来才是所有的元素,迭代器 Iterator 源码可以看我这篇文章 IteratorSpliterator使用tryAdvance迭代元素并进行一些操作,使用e原创 2021-10-29 17:15:49 · 487 阅读 · 0 评论 -
Java AbstractQueue虚拟类总结 AbstractQueue虚拟类注释翻译和解析中英文对照版
AbstractQueue虚拟类重点AbstractQueue虚拟类继承自AbstractCollection虚拟类,AbstractCollection虚拟类是使用子类实现的size()和iterator()两个方法,实现一个集合类的查询、添加、删除、批量操作,AbstractCollection虚拟类源码可以看我这篇文章 AbstractCollectionAbstractQueue实现Queue接口,Queue接口定义了6个方法,分为三类插入、删除、检索,每类有两个方法,一个是操作不成功抛出异常原创 2021-10-28 19:07:42 · 222 阅读 · 0 评论 -
Java CompletionService接口总结 CompletionService接口注释翻译和解析中英文对照版
CompletionService接口源码重点CompletionService接口是用于将新异步任务的创建与获取已完成任务的结果分离的服务,生产者submit要执行的任务。使用者take获取已完成的任务的Future,并按完成的顺序处理其结果可以调用Future的get方法获取任务执行的结果take是阻塞的方法阻塞直到获取一个已完成任务的Future,而poll方法是非阻塞的,如果此时没有任务完成,则直接返回null,poll(long timeout, TimeUnit unit)是会超时的阻塞原创 2021-10-28 18:26:42 · 242 阅读 · 0 评论 -
Java FutureTask源码总结 从数据结构层面理解FutureTask
文章目录FutureTask类源码重点FutureTask类的实现FutureTask类属性等待线程的链表节点执行任务run操作set操作finishCompletion操作setException操作handlePossibleCancellationInterrupt操作runAndReset操作获取任务执行的结果get操作get(long timeout, TimeUnit unit)操作FutureTask类源码重点FutureTask类的实现FutureTask类属性state是Futu原创 2021-10-28 16:54:31 · 302 阅读 · 0 评论 -
Java Comparator源码总结 Comparator源码注释翻译和解析中英文对照版
版本JDK8(JDK1.8)Comparator接口重点1.Comparator接口是一个函数式接口,里面只有一个虚方法compare(T o1, T o2),该接口表示一个比较器,而实现Comparable接口则表示其实现类是可比较的,Comparable接口的虚方法是compareTo(T o)2.compare(T o1, T o2) 返回值大于0,表示 o1 - o2 > 0,若o1,o2相等,则compare(T o1, T o2) 返回03.Comparator接口方法原创 2021-10-23 20:08:01 · 945 阅读 · 0 评论 -
Java Function源码总结 Function源码注释翻译和解析中英文对照版
版本JDK8(JDK1.8)Function接口重点1.Function是一个函数式接口,只有一个虚方法R apply(T t),表示传入一个输入值T,返回一个经过处理的输出值R,还有两个默认方法和一个静态方法2.Function接口方法方法名作用R apply(T t)传入一个输入值T,返回一个经过处理的输出值RFunction compose(Function before)返回一个先对T执行before的apply的处理,再执行this.apply处理的组合 F原创 2021-10-23 19:08:13 · 505 阅读 · 0 评论 -
Java Comparable源码总结 Comparable源码注释翻译和解析中英文对照版
版本JDK8(JDK1.8)Comparable接口重点Comparable是一个函数式接口,里面只有一个compareTo(T o)方法,实现Comparable接口的类意味着是可比较的类Comparable接口和Comparator接口非常容易混淆,Comparator接口虽然也是一个函数式接口其虚方法为compare(T o1, T o2) 这个方法和**compareTo(T o)**调用方式有明显不同,所以还是很好区分的,Comparator接口里面还定义了很多静态方法和默认方法com原创 2021-10-23 15:20:24 · 374 阅读 · 0 评论 -
Java Semaphore(信号量)源码总结 AQS虚拟类的实现 从数据结构层面理解Semaphore限流原理
文章目录Semaphore类源码重点Semaphore类具体实现查询操作availablePermits操作sync.getPermits操作修改操作reducePermits操作drainPermits操作sync.drainPermits操作Acquire操作(获取许可证)acquire操作acquireSharedInterruptiblytryAcquireShared公平锁版本非公平锁版本nonfairTryAcquireShared操作acquire(int permits)操作acquireU原创 2021-10-23 14:54:21 · 340 阅读 · 0 评论 -
Java AbstractQueueSynchronizer(AQS)源码总结从数据结构层面理解AQS
版本JDK8(JDK1.8)AbstractQueueSynchronizer虚拟类源码重点AbstractQueueSynchronizer虚拟类部分源码package java.util.concurrent.locks;import java.lang.invoke.MethodHandles;import java.lang.invoke.VarHandle;import java.util.ArrayList;import java.util.Collection;import原创 2021-10-22 14:45:58 · 648 阅读 · 0 评论 -
Java ThreadLocalMap静态内部类
版本JDK8(JDK1.8)ThreadLocalMap静态内部类源码重点1.ThreadLocalMap是ThreadLocal类的静态内部类,是用于实现其功能的数据结构ThreadLocal类源码可以看我这篇文章 ThreadLocal2.ThreadLocalMap类里面有个最核心的结构是Entry[],Entry类是一个键值对,其键是弱引用类型,值是强引用类型,有内存泄漏的问题,可以看上面ThreadLocal类那篇文章有详细讲解3.ThreadLocalMap的检索操作(查操作)pr原创 2021-10-15 10:52:44 · 841 阅读 · 0 评论 -
Java InheritableThreadLocal源码总结 InheritableThreadLocal源码注释翻译和解析中英文对照版
版本JDK8(JDK1.8)InheritableThreadLocal类源码重点1.InheritableThreadLocal类是ThreadLocal类的子类,且只重写ThreadLocal类的三个方法,childValue(T parentValue),getMap(Thread t),createMap(Thread t, T firstValue)ThreadLocal类源码可以看我这篇文章 ThreadLocal2.InheritableThreadLocal类方法方法名原创 2021-10-15 10:14:13 · 92 阅读 · 0 评论 -
Java ThreadLocal源码总结 ThreadLocal源码注释翻译和解析中英文对照版
版本JDK8(JDK1.8)ThreadLocal类源码重点1.ThreadLocal类是用于创建线程私有变量的类,其原理是,在每个Thread类中都有一个ThreadLocalMap类,就是一个Hash表,而这个ThreadLocalMap以ThreadLocal为键,以线程私有变量为值,又由于每个Thread对象的ThreadLocalMap都不同,所以虽然只有同一个ThreadLocal对象,也可以在不同的线程中对应不同的值2.从ThreadLocal的get方法就可以知道,为什么不同线程调用原创 2021-10-15 10:06:47 · 232 阅读 · 0 评论 -
Java StackTraceElement源码总结 StackTraceElement源码注释翻译和解析中英文对照版
版本JDK8(JDK1.8)StackTraceElement final类(无法被继承)源码重点1.堆栈跟踪中的一个元素,由Throwable.getStackTrace()返回,其中变量由VM虚拟机来初始化2.StackTraceElement中定义的部分变量变量名意义classLoaderName类加载器名称moduleName模块名称moduleVersion模块版本declaringClass全限定类名methodName方法名称原创 2021-10-10 13:16:25 · 796 阅读 · 0 评论 -
Java RunnableFuture源码总结 RunnableFuture源码注释翻译和解析中英文对照版
版本JDK8(JDK1.8)RunnableFuture接口源码重点1.RunnableFuture接口继承自Runnable接口和Future接口,重写Runnable的run()方法,在run方法运行中为Future设置运行结果,在run()方法运行后,可以通过get()方法获取结果Runnable源码可以看我这篇文章 RunnableFuture源码可以看我这篇文章 Future2…RunnableFuture接口由于继承Future自然就可以取消任务,以及拥有判断任务是否完成和取消的方法原创 2021-10-09 12:04:05 · 325 阅读 · 0 评论 -
Java Future源码总结 Future源码注释翻译和解析中英文对照版
版本JDK8(JDK1.8)Future接口源码重点1.Future表示异步计算的结果。提供了检查计算是否完成、等待其完成以及检索计算结果的方法。只有在计算完成后,才能使用方法get检索结果,必要时将其阻塞,直到准备就绪。2.Future的使用场景,在实现ExecutorService接口的线程池的submit(Callable)方法返回一个FutureExecutorService源码可以看我这篇文章 ExecutorServiceCallable源码可以看我这篇文章 Callable3.内原创 2021-10-09 11:52:53 · 401 阅读 · 0 评论 -
Java Callable源码总结 Callable源码注释翻译和解析中英文对照版
版本JDK8(JDK1.8)Callable接口源码重点1.Callable接口是一个函数式接口,里面只有一个call()方法,表示一个任务能返回结果并可能引发异常2.Callable通常与Future一起使用,call()方法返回一个Future,Future表示异步计算的结果,可以使用Future.get()获取结果Future源码可以看我这篇文章 FutureCallable接口源码package java.util.concurrent;/** * A task that ret原创 2021-10-09 11:24:41 · 257 阅读 · 0 评论 -
Java Runnable源码总结 Runnable源码注释翻译和解析中英文对照版
版本JDK8(JDK1.8)Runnable接口源码重点Runnable是一个函数式接口,里面只有一个run()方法,可以重写run()方法,并将Runnable传递进Thread类,开启一个新线程执行Runnable中的run()方法Runnable接口源码package java.lang;/** * The <code>Runnable</code> interface should be implemented by any * class whose in原创 2021-10-09 11:13:15 · 492 阅读 · 0 评论 -
Java RandomAccess源码总结 RandomAccess源码注释翻译和解析中英文对照版
版本JDK8(JDK1.8)RandomAccess接口源码重点RandomAccess接口是一个标记接口,用于指示实现该接口的列表支持快速随机访问,如数组实现的列表就支持快速随机访问,而链表实现的列表就不支持快速随机访问RandomAccess接口源码/** * Marker interface used by {@code List} implementations to indicate that * they support fast (generally constant time原创 2021-10-08 15:53:29 · 115 阅读 · 0 评论 -
Java ListIterator源码总结 ListIterator源码注释翻译和解析中英文对照版
版本JDK8(JDK1.8)ListIterator接口源码重点1.ListIterator接口是Iterator接口的扩展版,ListIterator允许沿着两个方向遍历列表(向后next()和向前previous()),同时比Iterator,多了set(.),add(.)方法用于在光标处替换和添加元素Iterator源码可以看我这篇文章 Iterator2.ListIterator没有当前元素,只有一个光标位置,其光标位置始终位于调用previous()返回的元素和调用next()返回的元素原创 2021-10-08 00:07:18 · 166 阅读 · 0 评论 -
Java Iterator源码总结 Iterator源码注释翻译和解析中英文对照版
版本JDK8(JDK1.8)Iterator接口源码重点1.接口定义的方法方法名作用boolean hasNext()如果迭代器还有剩余元素,则返回trueE next()返回迭代器中的下一个元素void remove()从基础集合中移除此迭代器返回的最后一个元素(即移除调用next()返回的元素), 每次调用next后只能调用此方法一次void forEachRemaining(Consumer<? super E> action)对每个剩原创 2021-10-07 23:11:18 · 216 阅读 · 0 评论 -
Java Consumer源码总结 Consumer源码注释翻译和解析中英文对照版
版本JDK8(JDK1.8)Consumer函数式接口源码重点1.Consumer函数式接口需要实现的方法是 void accept(T t),表示一个接受单个输入参数但不返回结果的操作。2.Consumer andThen(Consumer<? super T> after) 用于拼接多个Consumer的accept(T t)方法,按顺序执行操作,如果前面的操作抛出异常,则后面的操作不会执行Consumer函数式接口源码package java.util.function;i原创 2021-10-07 21:24:13 · 524 阅读 · 0 评论 -
Java Array源码总结 Array源码注释翻译和解析中英文对照版
版本JDK8(JDK1.8)Array final类(无法被继承)源码重点1.Array类提供静态方法来动态创建和访问Java数组。2.Array允许在get或set操作期间进行加宽转换,但如果发生缩小转换,则抛出IllegalArgumentException,这里的加宽指的是字节范围加宽,如int->double是合法的,而不是指数组长度加宽3.Array类内部有两个私有原生方法用于创建数组,newArray和multiNewArray,分别对应创建一维数组和创建多维数组4.Arra原创 2021-10-07 16:57:40 · 320 阅读 · 0 评论 -
Java Condition源码总结 Condition源码注释翻译和解析中英文对照版
版本JDK8(JDK1.8)Condition 接口源码重点1.Condition将Object监视方法(Object.wait()、Object.notify() 和Object.notifyAll())分解出来,通过将它们与任意Lock实现相结合,使每个对象具有多个等待集的效果。当Lock替换了synchronized方法和语句时,Condition替换了对象监视器方法的使用。Lock源码可以看我这篇文章 Lock2.Condition(也称为条件队列或条件变量)为一个线程提供了一种暂停执行(原创 2021-10-06 20:20:56 · 243 阅读 · 0 评论 -
Java ReentrantLock源码总结 ReentrantLock源码注释翻译和解析中英文对照版 AQS虚拟类的实现
版本JDK8(JDK1.8)ReentrantLock类源码重点1.ReentrantLock是一种可重入互斥锁,可重入的实现思想是维护一个计数器,每次抢到锁计数器加1,释放锁计数器减1,直到计数器为0,才会真正释放锁2.ReentrantLock实现了公平可重入锁和非公平可重入锁两个类,使用时可以在ReentrantLock(boolean fair) 传入true或false,则实例化FairSync类或NonfairSync类3.ReentrantLock实现了Lock接口,其方法自然具有L原创 2021-09-29 12:33:58 · 458 阅读 · 0 评论 -
Java Lock源码总结 Lock源码注释翻译和解析中英文对照版
版本JDK8(JDK1.8)Lock接口源码重点1.Lock实现提供了比使用synchronized方法和语句更广泛的锁操作。它们允许更灵活的结构,可能具有完全不同的属性,并且可能支持多个关联的Condition对象。2.随着灵活性的提高,还需要承担更多的责任。由于没有synchronized块结构锁,因此方法和语句不会自动释放锁。在大多数情况下,应使用以下模式:Lock l = ...; l.lock(); try { // 访问受此锁保护的资源 } finally {原创 2021-09-28 18:18:47 · 398 阅读 · 0 评论 -
Java AbstractOwnableSynchronizer源码总结 AQS父类 AbstractOwnableSynchronizer源码注释翻译和解析中英文对照版
版本JDK8(JDK1.8)AbstractOwnableSynchronizer虚拟类源码重点1.是AQS(AbstractQueueSynchronizer)父类,负责保存持有锁的线程,提供设置和获取当前持有锁的线程方法,获取为null,说明当前没有线程持有锁2.AbstractOwnableSynchronizer虚拟类定义的方法方法名作用final void setExclusiveOwnerThread(Thread thread)设置 thread 为持有锁线程原创 2021-09-26 11:56:27 · 148 阅读 · 0 评论 -
Java Predicate源码总结 Predicate源码注释翻译和解析中英文对照版
版本JDK8(JDK1.8)Predicate接口源码重点1.Predicate(谓词)是一个函数式接口,即接口里只一一个抽象方法 boolean test(T t),其他都是默认方法和静态方法2.实现Predicate的实现类可以重写text(T t)方法定义自己的规则,传入元素t符合自己的规则返回true,否则返回false3.Predicate接口定义的部分方法方法名作用boolean test(T t)判断参数是否该规则Predicate and(Predi原创 2021-09-25 14:27:55 · 285 阅读 · 0 评论 -
Java Collection源码总结 Collection源码注释翻译和解析中英文对照版
版本JDK8(JDK1.8)Collection接口源码重点1.集合层次结构中的根接口,集合表示一组对象,称为其元素,某些集合允许重复元素,而其他集合则不允许,有些是有序的,有些是无序的。2.该接口类定义了各种规范包括方法规范和抛出异常的规范,还有比较和哈希操作,以及分离器spliterator和流stream,方法主要有三类查询、修改、批量,如contains(Object o)、add(E e)、addAll(Collection<? extends E> c)分别对应查询、修改、批原创 2021-09-25 12:59:17 · 448 阅读 · 1 评论 -
Java AbstractCollection源码总结 AbstractCollection源码注释翻译和解析中英文对照版
版本JDK8(JDK1.8)AbstractCollection虚拟类源码重点1.此类提供Collection接口的框架实现,以最小化实现此接口所需的工作量,即调用Collection定义的size()、iterator()获取集合大小和迭代器,用这两个变量实现Collection中定义的其他方法如isEmpty()、contains(Object o)、toArray()等Collection接口总结可以看我的这篇文章 Collection2.继承AbstractCollection的子类必须自原创 2021-09-24 21:10:16 · 185 阅读 · 0 评论 -
Java Queue源码总结 Queue源码注释翻译和解析中英文对照版
版本JDK8(JDK1.8)Queue接口源码重点1.Queue接口继承Collection接口,自然就拥有Collection接口的特性,且Queue还提供额外的插入、删除和检索操作。这些方法都有两种形式:一种是在操作失败时抛出异常,另一种是返回特殊值(取决于操作,null或false)插入操作的后一种形式专门设计用于容量受限的Queue实现,在大多数实现中,插入操作不会失败。2.Queue接口定义了6个方法抛出异常返回特殊值插入add(e)offer(e)原创 2021-09-24 17:45:16 · 234 阅读 · 0 评论