摘要:​ 我在前面总结了Java集合中 "ArrayList的源码细节" ,其中也提到了ArrayList是线程不安全的(没有做任何的同步保证),也说到了fast fail机制以及多线程下使用ArrayList的异常问题。当然也包括单线程下使用不当: 。 ​ 那么jdk中为我们提供的线程安全的List是什 阅读全文
posted @ 2019-08-04 17:04 风沙迷了眼 阅读 (171) 评论 (0) 编辑
摘要:在并发编程中,我们可能经常需要用到线程安全的队列,JDK提供了两种模式的队列:阻塞队列和非阻塞队列。阻塞队列使用锁实现,非阻塞队列使用CAS实现。ConcurrentLinkedQueue是一个基于链表实现的无界线程安全队列,对于。下面看看JDK是如何使用非阻塞的方式来实现线程安全队列Concurr 阅读全文
posted @ 2019-08-03 19:41 风沙迷了眼 阅读 (90) 评论 (0) 编辑
摘要:LinkedList概述 ​ LinkedList 是 Java 集合框架中一个重要的实现,我们先简述一下LinkedList的一些特点: 底层采用的 结构; 支持空值和重复值(List的特点); 实现Deque接口,具有双端队列的特性,也可以作为栈来使用; 存储元素过程中,无需像 ArrayLis 阅读全文
posted @ 2019-08-02 17:38 风沙迷了眼 阅读 (103) 评论 (0) 编辑
摘要:ArrayList概述 (1) 是一种变长的集合类,基于定长数组实现。 (2) 允许空值和重复元素,当往 ArrayList 中添加的元素数量大于其底层数组容量时,其会通过 扩容 机制重新生成一个更大的数组。 (3) 底层基于数组实现,所以其可以保证在 复杂度下完成随机查找操作。 (4) 是非线程安 阅读全文
posted @ 2019-08-01 17:11 风沙迷了眼 阅读 (380) 评论 (0) 编辑
摘要:HashMap的结构图示 ​ jdk1.7的HashMap采用数组+单链表实现,尽管定义了hash函数来避免冲突,但因为数组长度有限,还是会出现两个不同的Key经过计算后在数组中的位置一样,1.7版本中采用了链表来解决。 ​ 从上面的简易示图中也能发现,如果位于链表中的结点过多,那么很显然通过key 阅读全文
posted @ 2019-07-31 19:23 风沙迷了眼 阅读 (97) 评论 (0) 编辑
摘要:AQS概述 ​ AbstractQueuedSynchronizer抽象队列同步器简称AQS,它是实现同步器的基础组件,juc下面Lock的实现以及一些并发工具类就是通过AQS来实现的,这里我们通过AQS的类图先看一下大概,下面我们总结一下AQS的实现原理。先看看AQS的类图。 ​ (1) AQS是 阅读全文
posted @ 2019-07-31 10:24 风沙迷了眼 阅读 (272) 评论 (0) 编辑
摘要:HashMap的结构图示 ​ 本文主要说的是jdk1.8版本中的实现。而1.8中HashMap是数组+链表+红黑树实现的,大概如下图所示。后面还是主要介绍Hash Map中主要的一些成员以及方法原理。 ​ 那么上述图示中的结点Node具体类型是什么,源码如下。Node是HashMap的内部类,实现了 阅读全文
posted @ 2019-07-24 11:07 风沙迷了眼 阅读 (427) 评论 (0) 编辑
摘要:一、反射概述 反射机制指的是Java在运行时候有一种自观的能力,能够了解自身的情况为下一步做准备,其想表达的意思就是:在运行状态中,对于任意一个类,都能够获取到这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性(包括私有的方法和属性),这种动态获取的信息以及动态调用对象的方法 阅读全文
posted @ 2019-06-17 10:29 风沙迷了眼 阅读 (302) 评论 (0) 编辑
摘要:非阻塞同步:基于冲突检测的乐观并发策略,通俗讲就是先进行操作,如果没有其他线程争用共享数据,那操作就成功了,如果争用数据有冲突那就采用其他的补偿措施(最常见的就是不断重试直到成功),这种乐观的并发策略使得很多线程不需要因为竞争失败直接挂起,这种同步措施称为非阻塞同步。下面我们就从硬件原语开始了解非阻 阅读全文
posted @ 2019-06-15 16:43 风沙迷了眼 阅读 (136) 评论 (0) 编辑
摘要:一、ThreadLocal简介 多线程访问同一个共享变量的时候容易出现并发问题,特别是多个线程对一个变量进行写入的时候,为了保证线程安全,一般使用者在访问共享变量的时候需要进行额外的同步措施才能保证线程安全性。ThreadLocal是除了加锁这种同步方式之外的一种保证一种规避多线程访问出现线程不安全 阅读全文
posted @ 2019-06-14 11:34 风沙迷了眼 阅读 (1019) 评论 (2) 编辑