源码解析
关于Java的底层源码的理解
JH_WW
这个作者很懒,什么都没留下…
展开
-
AQS详解
Node节点获取同步状态失败的线程,等待的状态,以及先驱和后继节点将其加入同步队列,同事会阻塞当前线程,同步状态释放时,会把首节点中的线程唤醒,使其再次获取同步状态 static final class Node { /** 标志着一个节点是处在共享模式*/ static final Node SHARED = new Node(); ...原创 2018-05-20 11:03:28 · 185 阅读 · 0 评论 -
ReentrantReadWriteLock源码解析
NonfairSync ReentrantReadWriteLockstatic final class NonfairSync extends Sync { private static final long serialVersionUID = -8159625535654395037L; final boolean writerShouldBlock() { ...原创 2018-05-20 16:11:30 · 188 阅读 · 0 评论 -
Volatile关键字
volatile关键字原理 加了volatile关键字的变量在汇编层面的指令会加上Lock前缀 加了Lock会执行以下两步:1.将当前处理器缓存行的数据写回内存。2.这个写操作会使得其他CPU里面缓存了相应的数据失效 一般变量数据改变不会立即写回内存,只是更新缓存行的数据 加了volatile关键字的变量会将变量立即写回内存,但是其他cpu内的数据仍然不同步,...原创 2018-04-22 13:29:06 · 198 阅读 · 0 评论 -
多线程的中断
Thread.interrupted() 测试当前线程是否已经中断 public static boolean interrupted() { return currentThread().isInterrupted(true); }调用:Thread.curr...原创 2018-05-18 19:39:51 · 221 阅读 · 0 评论 -
同步状态
同步状态public enum State { /** 线程新建未开始 */ NEW, /** 在虚拟机运行但是可能在等待其他来自操作系统的资源 */ RUNNABLE, /** 一个线程在等待监视器锁的阻塞状态为了进入或者重入一个同步块或者方法 */ BLOCKED, /** 无限等待其他线程执...原创 2018-05-19 16:54:33 · 808 阅读 · 0 评论 -
ReentrantLock与AQS
ReentrantLock的Sync继承自AQSSync实现了nonfairTryAcquire 、tryRelease、isHeldExclusively, 而TryAcquire和lock留给子类实现abstract static class Sync extends AbstractQueuedSynchronizer { private static fina...原创 2018-05-19 21:28:59 · 204 阅读 · 0 评论 -
ReadWriteLock源码分析
ReadWriteLock源码分析/** * Create by ~JH~ on 2018/4/13 *//** *一个读写锁维持一对锁的联系,一个是只读锁,一个是只写锁,读锁在多线程时是同步的只要没有写操作。 *写锁是排它锁 *所有实现了这个接口的类都必须保证写锁内存同步对读锁的影响, * 一个成功获取读锁的线程将会看到所有更新的在释放写锁之前 * 读锁允许高并发的...翻译 2018-04-14 08:37:13 · 178 阅读 · 0 评论 -
ReentrantLock源码分析
ReentrantLock源码分析import java.util.Collection;import java.util.concurrent.TimeUnit;import java.util.concurrent.locks.AbstractQueuedSynchronizer;import java.util.concurrent.locks.Condition;/** ...翻译 2018-04-14 10:55:27 · 274 阅读 · 0 评论 -
ReentrantReadWriteLock源码分析
ReentrantReadWriteLock源码分析/** * Create by ~JH~ on 2018/4/14 */import java.util.concurrent.TimeUnit;import java.util.Collection;import java.util.concurrent.locks.AbstractQueuedSynchronizer;...翻译 2018-04-14 15:51:16 · 165 阅读 · 0 评论 -
LinkedHashMap源码分析
LinkedHashMap源码分析/** * Create by ~JH~ on 2018/4/12 */import java.util.*;import java.util.function.Consumer;import java.util.function.BiConsumer;import java.util.function.BiFunction;import j...翻译 2018-04-13 16:19:38 · 187 阅读 · 0 评论 -
Vector部分源码分析
Vector部分源码分析/** * Create by ~JH~ on 2018/4/13 */import java.util.*;import java.util.function.Consumer;import java.util.function.Predicate;import java.util.function.UnaryOperator;/** *Vect...翻译 2018-04-13 18:06:32 · 224 阅读 · 0 评论 -
ArrayList源码
ArrayList源码/** * Create by ~JH~ on 2018/4/13 *//* * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license t...翻译 2018-04-13 18:22:42 · 219 阅读 · 0 评论 -
Lock源码分析
Lock源码分析/** * Create by ~JH~ on 2018/4/13 */import java.util.concurrent.TimeUnit;import java.util.concurrent.locks.Condition;/** *实现Lock类可以获得在synchronized方法和声明上专用的操作。 * 他们允许更加灵活的结构可能会有相当不同...翻译 2018-04-13 21:47:21 · 239 阅读 · 0 评论 -
HashMap部分源码分析
HashMap部分源码分析import java.io.IOException;import java.io.InvalidObjectException;import java.io.Serializable;import java.lang.reflect.ParameterizedType;import java.lang.reflect.Type;import java...翻译 2018-04-12 19:23:47 · 177 阅读 · 0 评论 -
HashTable部分源码分析
HashTable部分源码分析/** * Create by ~JH~ on 2018/4/12 */import java.io.*;import java.util.*;import java.util.concurrent.ThreadLocalRandom;import java.util.function.BiConsumer;import java.util.fun...翻译 2018-04-12 21:19:09 · 170 阅读 · 0 评论 -
ParameterizedType源码分析
ParameterizedType源码分析/** * Create by ~JH~ on 2018/4/12 */import java.lang.reflect.Type;/** * ParameterizedType represents a parameterized type such as * Collection<String>. ...翻译 2018-04-12 16:52:38 · 249 阅读 · 0 评论 -
Map.Entry源码分析
Map.Entry源码分析import java.io.Serializable;import java.util.Comparator;import java.util.Map;import java.util.Objects;/** * Create by ~JH~ on 2018/4/11 *//** *这个是Map的内部接口,Map.entrySet()方法返回一...翻译 2018-04-11 19:55:58 · 1135 阅读 · 0 评论 -
Future源码分析
Future源码分析/** * Create by ~JH~ on 2018/4/10 */import java.util.concurrent.ExecutionException;import java.util.concurrent.TimeUnit;/** *Future代表一步计算的结果。他的方法都检查计算是否完成,为了等待完成和恢复计算结果。 *当计算完成,结...翻译 2018-04-11 00:07:14 · 470 阅读 · 0 评论 -
ExcutorService源码解析
ExcutorService/** * Create by ~JH~ on 2018/4/9 */import java.util.List;import java.util.Collection;import java.util.concurrent.*;/** *ExcutorService可以停止,这个操作会导致拒绝生产新的任务。 * 两个不同的方法提供停止一个Ex...翻译 2018-04-11 00:30:40 · 457 阅读 · 0 评论 -
Callable源码分析
Callable源码分析/** * Create by ~JH~ on 2018/4/9 *//** *一个任务返回的结果可能抛出异常,继承者定义了一个单例的没有参数的方法被称为call *Callable接口与Runnable接口相似,这两个都是为那些可能被其他线程的执行的实例的类设计的 * Runnable不会返回一个结果,也不会跑出checked异常。 *Execu...翻译 2018-04-09 15:29:08 · 396 阅读 · 0 评论 -
Excutor源码解析
Current 之Excutorpackage java.util.concurrent;/** * *这是一个执行runnable的任务,这个接口从技术层面为每个任务如何运行提供一种解耦的方式, *包括线程使用的细节,时序安排等。Excutor是经常被使用的,除了明确的创建线程。 *例如,如果你使用一系列的线程不是new Thread(new(RunnableTask())...翻译 2018-04-09 09:18:20 · 247 阅读 · 0 评论