![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java源码阅读
默默努力的小程序员
这个作者很懒,什么都没留下…
展开
-
Java并发源码:BlockingQueue
Java并发源码:BlockingQueue 阻塞队列是一个支持阻塞的插入方法和阻塞的移除方法的队列。 方法 抛出异常 返回特殊值 一直阻塞 超时退出 插入方法 add(e) offer(e) put(e) offer(e,time,unit) 移除方法 remove(e) poll() take() poll(time,unit) 检查方法 element() pee...原创 2020-01-02 16:11:01 · 125 阅读 · 1 评论 -
Java并发源码:ConcurrentHashMap
Java并发源码:ConcurrentHashMap 为什么要使用ConcurrentHashMap 不安全的HashMap 效率低下的HashTable ConcurrentHashMap的锁分段技术可以有效提升并发访问率 ConcurrentHashMap的结构 ConcurrentHashMap是由Segment数组结构和HashEntry数组结构组成的。 Jdk1.7 Segm...原创 2019-12-31 15:30:49 · 93 阅读 · 0 评论 -
java并发源码:Condition
java并发源码:Condition 比对Object的监视器方法和Condition接口 对比项 Object Condition 前置条件 获取对象的锁 调用Lock.lock()获取锁 ...原创 2019-12-25 15:05:05 · 104 阅读 · 0 评论 -
java并发源码:ReentrantReadWriteLock
java并发源码:ReentrantReadWriteLock 结构 可见ReentrantReadWriteLock实现了ReadWriteLock接口。 ReadWriteLock接口定义了两个接口: Lock readLock() Lock writeLock() ReentrantLock是排他锁,在同一时刻只允许一个线程进行访问,而读写锁在同一时刻可以允许多个线程访问。但是在写线...原创 2019-12-23 16:05:11 · 78 阅读 · 0 评论 -
java并发源码:ReentrantLock
java并发源码:ReentrantLock 结构 可见ReentrantLock实现了Lock接口。 lock lock接口定义了五个方法。 void lock();:获取锁。 void lockInterruptibly() throws InterruptedException;:可中断的获取锁,该方法会响应中断。 boolean tryLock();:尝试非阻塞的获取锁。 boolean...原创 2019-12-12 14:57:43 · 93 阅读 · 0 评论 -
java并发源码:Synchronized
java并发源码:Synchronized synchronized加锁方式: 修饰实例方法:锁是当前对象。 修饰静态方法:锁是当前类的class对象。 修饰代码块:锁是synchronized括号里配置的对象。 JVM基于进入和退出Monitor对象来实现方法同步和代码块同步的。代码块同步是用monitorenter 和monitorexit指令实现的。 public void tes...原创 2019-12-11 11:06:00 · 260 阅读 · 0 评论 -
java并发源码:volatile
java并发源码:volatile volatile的定义: java编程语言运行线程访问共享变量,为了确保共享变量能被准确和一致地更新,线程应该确保通过排它锁单独获得这个变量。如果一个变量被声明成volatile,java线程内存模型确保所有线程看到这个变量的值是一致的。(可见性) volatile的作用: 1.保证变量在多线程中的可见性 为了提高处理速度,处理器不直接和内存进行通信,而...原创 2019-12-10 16:25:12 · 165 阅读 · 0 评论 -
java并发源码:AbstractQueuedSynchronizer
java并发源码:AbstractQueuedSynchronizer 一、简介 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pEGdDFSw-1575887227561) AQS(队列同步器)是用来构建锁或者其它同步组件的基础框架,它使用了一个int成员变量来标识同步状态,通过内置的FIFO队列来完成资源获取线程的排队工作。 AQS面向的是锁的实现者,它...原创 2019-12-09 18:29:32 · 118 阅读 · 0 评论 -
java 源码阅读(五)HashSet
java 源码阅读(五)HashSet HashSet是一个无序,允许空值,不允许重复值的集合类。非线程安全类。 继承/实现 构造函数 private transient HashMap<E,Object> map; private static final Object PRESENT = new Object(); HashSet() public HashSet() { ...原创 2019-09-29 15:32:20 · 70 阅读 · 0 评论 -
java 源码阅读(四)Vector
java 源码阅读(四)Vector Vector是一种变长集合类,基于数组实现。ArrayList允许空值和重复元素。当往Vector中添加的元素数量超过底层数量时,会进行扩容。Vector实现了RandomAccess接口,所以可以保证在O(1)复杂度下完成随机查找操作。是一个线程安全类。 继承/实现 构造函数 protected Object[] elementData; protecte...原创 2019-09-27 16:10:00 · 159 阅读 · 0 评论 -
java 源码阅读(三)LinkedList
java 源码阅读(三)LinkedList LinkedList底层采用的是双向链表结构,支持空值和重复值。无法向ArrayList那样进行扩容,存储元素时,需要额外的空间存储前驱和后继的引用。LinkedList在链表头部和尾部的插入效率比较高,但在指定位置进行插入时,效率一般。操作复杂度为O(N)。LinkedList是非线程安全的集合类。 继承/实现 构造函数 transient int...原创 2019-09-26 16:01:45 · 95 阅读 · 0 评论 -
Java 源码阅读(二) ArrayList
java 源码阅读(二) ArrayList ArrayList是一种变长集合类,基于数组实现。ArrayList允许空值和重复元素。当往ArrayList中添加的元素数量超过底层数量时,会进行扩容。ArrayList实现了RandomAccess接口,所以可以保证在O(1)复杂度下完成随机查找操作。是一个非线程安全类,并发环境下,会出现错误。 实现/继承的类和接口 extends Abstra...原创 2019-09-25 15:42:34 · 173 阅读 · 0 评论 -
java 源码阅读(一) String
java 源码阅读(一) String String的属性: char[] value; int hash; String的重要方法 intern() /** * Returns a canonical representation for the string object. * <p> * A pool of strings, initially emp...原创 2019-09-24 15:21:39 · 114 阅读 · 0 评论