线程池你真不来了解一下吗?
本篇主要是讲解线程池,这是我在多线程的倒数第二篇了,后面还会有一篇死锁。主要将多线程的基础过一遍,以后有机会再继续深入! 线程池可以看做是线程的集合。在没有任务时线程处于空闲状态,当请求到来:线程池给这个请求分配一个空闲的线程,任务完成后回到线程池中等待下次任务**(而不是销毁…
Object对象你真理解了吗?
之前花了点之间时间去搞多线程的基础知识了,难呀难呀难呀....打算还写一篇线程池的就暂时将多线程系列停止了... 我们学Java的知道,Java是一门面向对象的语言。无论在Java中出现什么,都可以认为它是对象(除了八大基本数据类型。当然了,八大基本数据类型也能装箱成为对象):…
Lock锁子类了解一下
这个方法主要是判断当前线程是否位于CLH同步队列中的第一个。如果是则返回flase,否则返回true。 一般来说:我们大多数都是读取数据得多,修改数据得少。所以这个读写锁在这种场景下就很有用了! ReentrantReadWriteLock是一个读写锁,如果读的线程比写的线程要…
AQS简简单单过一遍
本来我是打算在这章节中写Lock的子类实现的,但看到了AQS的这么一个概念,可以说Lock的子类实现都是基于AQS的。 AQS我在面试题中也见过他的身影,但一直不知道是什么东西。所以本篇我就来讲讲AQS这个玩意吧,至少知道它的概念是什么,对吧~ 不要被人家唬到了,以为juc是什…
Java锁机制了解一下
其实都比较坑,如果能先系统讲了Synchronized锁机制,接着讲显式Lock锁机制,那就很容易理解了。也不需要跨那么多章节。 synchronized保证了线程的原子性。(被保护的代码块是一次被执行的,没有任何线程会同时访问) synchronized还保证了可见性。(当执…
多线程基础必要知识点!看了学习多线程事半功倍
不小心就鸽了几天没有更新了,这个星期回家咯。在学校的日子要努力一点才行! 本文章的知识主要参考《Java并发编程实战》这本书的前4章,这本书的前4章都是讲解并发的基础的。要是能好好理解这些基础,那么我们往后的学习就会事半功倍。 当然了,《Java并发编程实战》可以说是非常经典的…
Thread源码剖析
在写文章之前通读了一遍《Java 核心技术 卷一》的并发章节和《Java并发编程实战》前面的部分,回顾了一下以前写过的笔记。从今天开始进入多线程的知识点咯~ 实现多线程从本质上都是由Thread类来进行操作的~我们来看看Thread类一些重要的知识点。Thread这个类很大,不…
多线程三分钟就可以入个门了!
在写文章之前通读了一遍《Java 核心技术 卷一》的并发章节和《Java并发编程实战》前面的部分,回顾了一下以前写过的笔记。从今天开始进入多线程的知识点咯~ 之前在学习Java基础的时候学多线程基础还是挺认真的,可是在后面一直没有回顾它,久而久之就把它给忘掉得差不多了..在学习…
Java集合总结【面试题+脑图】,将知识点一网打尽!
着重标出的那些就是我们用得最多的容器。 其实,我也不知道要怎么总结好,因为之前写每一篇的时候都总结过了。现在又把他们重新罗列出来好像有点水,所以,我决定去回答一些Java容器的面试题! 当然了,我的答案未必就是正确的。如果有错误的地方大家多多包含,希望不吝在评论区留言指正~~ …
3分钟搞掂Set集合
A::底层数据结构由哈希表(是一个元素为链表的数组)和双向链表组成。 所以可以直接总结出:HashSet实际上就是封装了HashMap,操作HashSet元素实际上就是操作HashMap。这也是面向对象的一种体现,重用性贼高! 底层实际上是一个HashMap+双向链表实例(其实…
ConcurrentHashMap基于JDK1.8源码剖析
这个类听得也挺少的,在集合中是比较复杂的一个类了,它涉及到了一些多线程的知识点。 ConCurrentHashMap的底层是:散列表+红黑树,与HashMap是一样的。 Hashtable是在每个方法上都加上了Synchronized完成同步,效率低下。 ConcurrentH…
TreeMap就这么简单【源码剖析】
如果我们设置key为null,会抛出异常的,就不执行下面的代码了。 平衡红黑树的代码是比较复杂的,我就不说了,你们去看吧(反正我看不懂).... 如果在构造方法中传递了Comparator对象,那么就会以Comparator对象的方法进行比较。否则,则使用Comparable的…
LinkedHashMap就这么简单【源码剖析】
在构建新节点时,构建的是LinkedHashMap.Entry 不再是Node. 所以,LinkedHashMap的put方法和HashMap是一样的。 LinkedHashMap比HashMap多了一个双向链表的维护,在数据结构而言它要复杂一些,阅读源码起来比较轻松一些,因为…
HashMap就是这么简单【源码剖析】
threshold这个成员变量是阈值,决定了是否要将散列表再散列。它的值应该是:capacity * load factor才对的。 我们是根据key的哈希值来保存在散列表中的,我们表默认的初始容量是16,要放到散列表中,就是0-15的位置上。也就是tab[i = (n - 1…
Map集合、散列表、红黑树介绍
前面我们学习的Collection叫做集合,它可以快速查找现有的元素。 而Map在《Core Java》中称之为-->映射.. 作为学生来说,我们是根据学号来区分不同的学生。只要我们知道学号,就可以获取对应的学生信息。这就是Map映射的作用! 但同时,这会带来缺点:想要获取某个…
List集合就这么简单【源码剖析】
前一篇已经讲了Collection的总览:Collection总览,介绍了一些基础知识。 底层数据结构是数组。线程不安全 底层数据结构是链表。线程不安全 底层数据结构是数组。线程安全 第一次扩容后,如果容量还是小于minCapacity,就将容量扩充为minCapacity。 …
[2]十道算法题【Java实现】
最近在回顾以前使用C写过的数据结构和算法的东西,发现自己的算法和数据结构是真的薄弱,现在用Java改写一下,重温一下。 很多与排序相关的小算法(合并数组、获取数字每位值的和),我都没有写下来了,因为只要会了归并排序(合并数组),会了桶排序(获取数字每位的值),这些都不成问题了。…
集合Collection总览
无论在开发中,在面试中这个知识点都是非常非常重要的,因此,我在此花费的时间也是很多,得参阅挺多的资料,下面未必就做到日更了... 针对不同的需求:java就提供了很多集合类,多个集合类的数据结构不同。但是,结构不重要,重要的是能够存储东西,能够判断,获取 但是,一般我们要掌握的…
Java3y文章目录导航
从Java基础、JavaWeb基础到常用的框架再到面试题都有完整的教程,几乎涵盖了Java后端必备的知识点。该开源仓库很多的文章都是我个人原创,有部分来自顶级大佬的干货文章,很多知识点我还在不停的总结和完善。点击关注 ... 嗯,我来杭州了。 面试官:“谈谈Spring中都用到…
ThreadLocal就是这么简单
今天要研究的是ThreadLocal,这个我在一年前学习JavaWeb基础的时候接触过一次,当时在baidu搜出来的第一篇博文ThreadLocal,在评论下很多开发者认为那博主理解错误,给出了很多有关的链接来指正(可原博主可能没上博客了,一直没做修改)。我也去学习了一番,可惜…