Java基础
文章平均质量分 71
分享集合、多线程、IO等核心知识
MAX_VALUE
走在通往架构的路上
展开
-
jdk1.8简单梳理
匿名对象->Lambda表达式(必须是函数式接口)->方法引用1.方法引用:可以看作是Lambda表达式的简化形式。主要有三类:1)指向静态方法的方法引用2)指向任意类型实例方法的方法引用3)指向现有对象的实例方法的方法引用4)构造函数引用 (类名::new)2.流-Strem以声明式的方式处理数据集合流的定义:从支持数据处理操作的源(集合、数组或输入/输出资源)生成的元素序列流的特征:元素序列:流是元素序列,且只能被消费一次源:集合、数组或输入/输出资源,Arr原创 2021-07-13 17:21:04 · 141 阅读 · 0 评论 -
锁-ReentrantLock解析
1.ReentrantLock和Synchronize的比较Jdk中独占锁的实现除了使用关键字synchronized外,还可以使用ReentrantLock。虽然在性能上ReentrantLock和synchronized没有什么区别,但ReentrantLock相比synchronized而言功能更加丰富,使用起来更为灵活,也更适合复杂的并发场景。公平锁:当锁可用时,在锁上等待的时间最长的线程将获得锁的使用权(讲究先到先得)。先被cpu时间片选中的线程先获得锁。大部分情况我们使用非公平锁,非公平原创 2021-01-22 11:43:20 · 234 阅读 · 0 评论 -
线程池原理ThreadPoolExecutor
线程池是一种多线程技术,最大限度的提高cpu的利用率,提升系统的运行效率。然而线程的创建和销毁是十分消耗系统资源和时间的,线程池的作用在于集中管理线程的创建和销毁以及实现线程的复用。1.ThreadPoolExecutor的核心构造方法 public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long原创 2021-01-22 11:30:41 · 375 阅读 · 1 评论 -
多线程基础知识
一、Java多线程技能进程和线程进程:进程是进程实体的运行过程,是os资源分配和调度的基本单元。线程:程序的执行线索创建线程的常用方式1.继承Thread类2.实现Runnable接口3.实现Callable接口线程安全问题多线程并发访问临界资源,破坏原子操作停止线程 interrupt方法interrupted:判断当前线程是否中断,并清除中断标志位isInterrupted:判断线程是否中断,不清除中断标志位异常抛出法判断线程处于中断状态后,抛原创 2021-01-22 11:04:26 · 99 阅读 · 0 评论 -
多线程整理
多线程是Java技术的核心基础,通过多线程技术,能实现程序的并发执行,提升系统的资源的利用率和性能。基础知识线程池原理ThreadLocal解析ReentrantLock解析原创 2021-01-22 10:54:59 · 72 阅读 · 0 评论 -
IO流知识汇总
一、IO流的定义水管承载的是水,油管承载的是油,io流中承载是数据。1.按流的方向分:输入流、输出流以jvm作为参照,将数据从外部读入到jvm中称为输入流;将数据从jvm写入到外部称为输出流。2.按流的数据单位分:字节流、字符流字节流可以传输所以的数据,如文本、图片、音频、视频。字符流专门传输文本。3.按流的功能流:节点流、过滤流节点流是专门完成传输功能的流,过滤流是对...原创 2020-01-22 11:48:15 · 172 阅读 · 0 评论 -
集合-LinkedHashMap源码解析
HashMap是无序的,LinkedHashMap基于HashMap实现,重新进行了包装,对外表现为双向链表结构,因而是有序的,数据的存储本质上是由父类HashMap完成。LinkedHashMap的增删改查方法都是基于HashMap,只是做了增强。1.接口实现继承了HashMap,实现了Map接口。2.成员变量 //双向链表的头结点 transient Lin...原创 2020-01-17 09:55:20 · 167 阅读 · 0 评论 -
集合-HashMap源码解析
如同说到List,我们想到的是ArrayList,Map中我们用的最多的就是HashMap,HashMap拥有和ArrayList同等重要的地位。ArrayList是单列集合,存储的是一种类型的的值(泛型类型不为Object情况)。HashMap是双列集合,存储的key-value的键值对。从本质上说,HashMap和Java Bean对象是一致的,key对应的是属性,value对应的是属性值。H...原创 2020-01-17 09:54:38 · 194 阅读 · 0 评论 -
集合-LinkedList源码解析
在实际开发中,ArrayList的使用频率是最高的,因为多数情况下我们使用ArrayList容器存储数据,以便在后面做遍历,或者做查询操作,此时用ArrayList确实是最恰当的。然而有些场景,我们可能会经常性的对容器里的元素进行变更,那么这个时候LinkedList就出来了,得益于它底层的链表结构,在数据的增删方面比ArrayList更具有优势。链表示意图:1.LinkedList特...原创 2020-01-17 14:35:21 · 189 阅读 · 0 评论 -
集合-ArrayList源码解析
首先我们对Jdk中集合类的命名做一个简单的梳理。ArrayList即Array+List表示这是一个集合,它的数据结构使用的数组。同理LinkedList表示这是其数据结构是链表;HashMap表示其基于hash算法实现的(本质是数组+链表+红黑树);TreeMap其数据结构是红黑树;LinkedHashMap底层是HashMap,同时进一步做了封装,对外展示是链表结构。说了这么多,我想说的是Jd...原创 2020-01-17 09:53:14 · 260 阅读 · 0 评论 -
集合类源码整理
集合是Java的核心知识,我们在日常的工作和学习中经常会使用到。集合作为一种容器,通常用到的就是它的增删改查功能。对我自己来说,虽然我会用,但是在相当长的一段时间里是知其然不知其所以然。学习集合的源码知识,了解他的底层数据结构是作为一名技术人员的必修课。在后续的一段时间,我会持续的更新相关的源码知识,如果大家感兴趣,请关注我,一起学习。每篇文章都会从集合的成员变量、涉及的数据结构、构造方法、常用方...原创 2020-01-17 09:42:08 · 216 阅读 · 0 评论 -
集合-TreeMap源码解析
TreeMap是Map的一个实现类,底层数据结构是红黑树。它是有序的,默认顺序是自然排序,即ascii码升序,若在构造方法中传入比较器comparator,则按照比较器的规则进行排序。若对红黑树的数据结构不太熟悉,建议先移步https://blog.csdn.net/MAX_VALUE/article/details/104003631。本文主要介绍TreeMap的常用方法的工作流程,水平有限,若...原创 2020-01-16 15:38:12 · 283 阅读 · 0 评论 -
ThreadLocal源码解析
多线程并发访问临界资源,破坏原子操作,会导致线程安全问题。将公共变量与ThreadLocal进行绑定,线程使用该公共变量时拿到的是在该线程中的副本变量,即将线程中的数据进行了隔离,多个线程能使用该变量但互不影响。变量值的存放路径为:Thread->ThreadLocalMap->Entry->value,ThreadLocal作为Entry的key,通过key可以拿到valu...原创 2020-01-16 09:29:00 · 228 阅读 · 0 评论