尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发

本期内容包括
JUC多线程并发、JVM和GC等目前大厂笔试中会考、面试中会问、工作中会用的高频难点知识。
斩offer、拿高薪、跳槽神器,对标阿里P6的《尚硅谷_互联网大厂高频重点面试题(第2季)》发布。本套课程总结分析了2019年大厂互联网公司常见常考的技术点,通过对40多个题目共计120集视频详细全面的讲解,让大家深刻掌握、扎实吃透当前的主流Java高级技术。
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第1张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第2张图片

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第3张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第4张图片

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第5张图片

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第6张图片

NoSQL数据库Redis
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第7张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第8张图片

消息中间件MQ
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第9张图片

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第10张图片
在这里插入图片描述

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第11张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第12张图片

JUC多线程及高并发
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第13张图片
并发和并行有什么区别
并发:多个线程去访问同一个资源
并行:各种事情同时去做,一边干什么,一边干什么
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第14张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第15张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第16张图片

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第17张图片

请谈谈你对volatile的理解

volatile是什么

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第18张图片
三大特性
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第19张图片

JMM内存模型之可见性

JMM:java内存模型
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第20张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第21张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第22张图片
各个线程对主内存中的数据进行改变,不是直接修改,而是会把age=25拷贝到自己的工作内存中再进行改变
t1改为37后要把新数据写回到主内存中,t2,t3不知道主内存中的值已经改变了
所以我们需要有一个机制:JMM内存模型的可见性,只要有一个线程改变数据后要写回到主内存中,其它的线程马上就会知道主内存中的数据已经改变了

可见性的代码验证说明

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第23张图片

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第24张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第25张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第26张图片
3秒之后,a线程已经把number改了,但是main线程不知道,对main线程不可见,还在傻傻的等着,没有人通知我

现在修改程序,加了volatile
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第27张图片
增加了内存之间的可见性
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第28张图片

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第29张图片

volatile不保证原子性

原子性:不可分割、完整性,也就是某个线程正在做某个具体业务时,中间不可以被加塞或者被分割,需要整体完整,要么同时成功,要么同时失败。
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第30张图片
把验证可见性的代码写到一个方法seeokbyvolatile

20个线程去调用addplus方法,每个线程调用1000次,则结果应该是2000。
多线程编程的模板forthread10是自己设置的快捷键

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第31张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第32张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第33张图片

volatile不保证原子性理论解释

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第34张图片

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第35张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第36张图片
轻量级就是乞丐版的sunchronized
不要杀鸡焉用牛刀,太重了

拷贝回自己的内存空间,每个人都拿到0,写回到主内存时,线程1写回到的时候被挂起了,线程2歘的写回了。然后线程1恢复后又写回了一遍,把原来的1给覆盖了。
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第37张图片

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第38张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第39张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第40张图片
三个线程都拿到1,都在各自的工作内存中加1,写回到的时候,没有拿到最新的值就又写了,写覆盖

volatile不保证原子性问题解决

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第41张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第42张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第43张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第44张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第45张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第46张图片

volatile指令重排案例1

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第47张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第48张图片
不可以,必须考虑指令之间的数据依赖性
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第49张图片
加了volatile之后是禁止指令重排

volatile指令重排案例2

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第50张图片
答案是6

但是指令重排后,答案可能是5

所以在这些变量前面加上volitaile就可以禁止指令重排

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第51张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第52张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第53张图片

单例模式在多线程环境下可能存在安全问题

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第54张图片
单例模式有六种
掌握一种即可
第一步 定义私有的实例变量
第二步 构造方法
第三步 新建,返回同一个变量
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第55张图片
比较引用类型,内存地址
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第56张图片

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第57张图片
在多线程坏境下,单例模式出现了问题
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第58张图片
如果加上synchronized,在多线程的环境控制住了
但是太重了,并发性下降了

单例模式volatile分析

DCL模式 Double Check Lock双端检锁机制

在加锁之前和之后都进行一次检测
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第59张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第60张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第61张图片
在这里插入图片描述
地址不为空,但是内容为空
所以要在instance变量上面加上volatile
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第62张图片
总结:
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第63张图片

CAS你知道吗?

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第64张图片

CAS是什么

CAS compare and set 比较并交换
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第65张图片
多个线程去操作主内存中的数据。
一个叫做期望值、一个叫做更新值

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第66张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第67张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第68张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第69张图片
主内存中数据是5
一个线程拷贝回去自己的工作内存,对它进行修改,然后写回到主内存的时候,会进行比较和交换,如果和拷贝的数据一样的话,就将改变后的数据写回去;否则的话,就不进行写回。
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第70张图片

CAS底层原理上

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第71张图片
当前对象 内存偏移量

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第72张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第73张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第74张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第75张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第76张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第77张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第78张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第79张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第80张图片

AtomicInteger 的getandincrement方法底层其实是CAS思想+套的是unsafe类的CPU原语来保证原子性,
底层思想是比较并交换,真实值和期望值相等就交换成功,否则就失败,失败就再来,直到比较成功为止。

CAS底层原理下

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第81张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第82张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第83张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第84张图片

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第85张图片

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第86张图片

CAS缺点

CAS能够不加锁保证一致性,并发性加强了
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第87张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第88张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第89张图片

原子类AtomicInteger的ABA问题谈谈?原子更新引用知道吗?

在这里插入图片描述

ABA问题

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第90张图片

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第91张图片
2号线程比1号线程快,把原来的A改为B,又改为A。
1号线程回来后,期望的和原来的一样,以为没有改变过,于是写回主内存。
但是中间有猫腻,2号线程已经把它改过了又改回去了。

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第92张图片

AtomicReference原子引用

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第93张图片
只管开头和结尾,没有管中间。
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第94张图片
原子引用的泛型类

原子User类型
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第95张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第96张图片

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第97张图片

AtomicStampedReference版本号原子引用

时间戳原子引用
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第98张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第99张图片

ABA问题的解决

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第100张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第101张图片
修改成功,

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第102张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第103张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第104张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第105张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第106张图片

我们知道ArrayList是线程不安全的,请编码写一个不安全的案例并给出解决方案。

集合类不安全之并发修改异常

ArrayList底层是一个数组
什么类型的数组?
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第107张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第108张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第109张图片
数组初始长度为10,超过10以后进行扩容。

它是线程不安全的。
举一个线程不安全的案例。
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第110张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第111张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第112张图片

把3改为30
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第113张图片

java.util.ConcurrentModificationException
并发修改异常

线程不安全是指:在多线程的情况下,
方法一:
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第114张图片
Vector类可以解决这个问题,加锁一致性可以保证,但是并发性急剧下降。

不许用Vector
方法二:
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第115张图片

Map和Set也是不安全的集合类
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第116张图片
方法三:

集合类不安全之写时复制

在这里插入图片描述
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第117张图片
写时复制
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第118张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第119张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第120张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第121张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第122张图片

锁、扩容、写新元素
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第123张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第124张图片

集合类不安全之Set

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第125张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第126张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第127张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第128张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第129张图片

集合类不安全之Map

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第130张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第131张图片

TransferValue醒脑小练习

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第132张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第133张图片
传值还是传引用
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第134张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第135张图片
age属于main方法的,然后调用方法时复印了一份传给它,然后方法把复印件给改动了
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第136张图片
我只是给你复印了一份值,原件根本没动,所以第一个age还是20

person是main的,传引用传内存地址给方法,两个引用指向了同一个地址,这时把这个地址的值改动了
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第137张图片

str是属于main方法的,这个池子里有了abc
这个池子里面没有xxx,那么就重新创建一个指向它
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第138张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第139张图片

公平锁/非公平锁/可重入锁/递归锁/自旋锁 谈谈你的理解?请手写一个自旋锁。

在这里插入图片描述

Java锁之公平锁/非公平锁

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第140张图片

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第141张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第142张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第143张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第144张图片
无参数:不公平 允许某个同学突然出来加塞
有参数:公平 队列先来后到
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第145张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第146张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第147张图片
synchronized等同于锁,非公平锁
被它抢到了锁上了

Java锁之可重入锁和递归锁理论

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第148张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第149张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第150张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第151张图片

Java锁之可重入锁和递归锁代码验证

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第152张图片
资源类

线程操作资源类
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第153张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第154张图片
t1线程在外层方法获取锁的时候,t1在进入内层方法会自动获取锁
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第155张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第156张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第157张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第158张图片
只要锁匹配,几把锁都可以。
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第159张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第160张图片

Java锁之自旋锁理论知识

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第161张图片

Unsafe类+CAS思想(自旋锁)
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第162张图片

Java锁之自旋锁代码验证

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第163张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第164张图片
如果是第一次进来线程,就不进循环
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第165张图片
A线程进来,发现期望的是空的,那么while的条件就是false,于是不进入循环,直接拿到了锁。
B线程进来,发现期望的值不是空,那么while的条件就是true,于是它进入锁中,一直会循环的判断,直到期望的值是空了,才能推出循环,获得锁。
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第166张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第167张图片
BB等5秒钟,等A解锁了,B才能解锁

Java锁之读写锁理论知识

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第168张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第169张图片

Java锁之读写锁代码验证

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第170张图片
以前使用锁和synchronized读和写通通不能并发执行,数据一致量可以保证,但并发性急剧下降。

线程操作资源类
高内聚低耦合
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第171张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第172张图片

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第173张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第174张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第175张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第176张图片
锁不能进行细粒度的划分,只能把全部进行封杀
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第177张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第178张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第179张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第180张图片

CountDownLatch/CyclicBarrier/Semaphore使用过吗?

在这里插入图片描述

CountDownLatch

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第181张图片
火箭发射
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第182张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第183张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第184张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第185张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第186张图片

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第187张图片
使用枚举
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第188张图片

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第189张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第190张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第191张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第192张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第193张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第194张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第195张图片

CyclicBarrier Demo

循环屏障
人都到齐了才能开会
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第196张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第197张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第198张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第199张图片
一个是减法,倒计时
一个是加法,累积

Semaphore Demo

多个线程强多个资源
信号灯
资源为1时就退化成synchronized
在这里插入图片描述
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第200张图片
不写是非公平锁,效率高允许加塞
可以复用
可以抢占可以释放
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第201张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第202张图片
停3秒钟
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第203张图片

阻塞队列知道吗?

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第204张图片

阻塞队列理论

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第205张图片

阻塞队列接口结构和实现类

生产者 消费者 sychronized wait notify
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第206张图片
队列:先进先出
阻塞:
在这里插入图片描述
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第207张图片
生产者消费者模式:用阻塞对垒写

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第208张图片

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第209张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第210张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第211张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第212张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第213张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第214张图片

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第215张图片

阻塞队列API之抛出异常组

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第216张图片

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第217张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第218张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第219张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第220张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第221张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第222张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第223张图片
检查队列的首元素是谁?
a
先进先出

阻塞队列API之返回布尔值组

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第224张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第225张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第226张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第227张图片

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第228张图片

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第229张图片
队列的首元素是谁
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第230张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第231张图片

阻塞队列API之阻塞和超时控制

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第232张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第233张图片

阻塞的意思是:我现在满了,就等着,直到有元素出去。因为我不能丢消息呀,就等着
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第234张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第235张图片
取不出来就堵着

过时不候
超时
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第236张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第237张图片
这时候没有等2秒钟
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第238张图片
只阻塞2秒钟。2秒钟之后就打印出false

阻塞队列之同步SynchronizedQueue队列

在这里插入图片描述
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第239张图片
0库存,生产出来的马上被别人拿走
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第240张图片
你不消费,你想到里面插第二个你插不进去
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第241张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第242张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第243张图片

线程通信之生产者消费者传统版

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第244张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第245张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第246张图片

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第247张图片

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第248张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第249张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第250张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第251张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第252张图片

防止虚假唤醒
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第253张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第254张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第255张图片
没有控制住,生产了2个
所以唤醒的时候要加入循环
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第256张图片

synchronized和lock有什么区别

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第257张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第258张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第259张图片

锁绑定多个条件condition

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第260张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第261张图片

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第262张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第263张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第264张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第265张图片

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第266张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第267张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第268张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第269张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第270张图片

线程通信之生产者消费者阻塞队列版

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第271张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第272张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第273张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第274张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第275张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第276张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第277张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第278张图片

线程池用过吗?ThreadPoolExecutor谈谈你的理解?

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第279张图片

Callable接口

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第280张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第281张图片
区别:
runnable接口没有返回值,不会抛异常,实现run
callable接口有返回值,会抛异常,实现call
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第282张图片
要的是runnable,有的是callable,如何把它们之间加上关系

生活的例子:两个同学,我默认接收的参数是张,但是,要找一个中间人
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第283张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第284张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第285张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第286张图片
FutureTask实现穿针引线的作用。

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第287张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第288张图片
已经有runnable接口,为什么还需要callable接口呢?
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第289张图片
多个线程都要使用cllable,每次都要返回一个成功或者失败的返回值。
适配模式。
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第290张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第291张图片

get()建议放在最后
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第292张图片
因为我们不会等这个线程,给它充足的时间去计算
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第293张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第294张图片
如果把get放到前面,mian线程就被堵住了
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第295张图片
所以这里可以加一个循环的判断!等算完了,才往下做

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第296张图片
两个线程都开始做同一个任务,只会执行一次!即复用
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第297张图片
如果说非要进去!那么就要启动多个futuretask

线程池使用及优势

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第298张图片
永远传参数传接口

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第299张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第300张图片
看CPU的核数

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第301张图片

线程池3个常用使用方式

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第302张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第303张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第304张图片
ThreadPoolExecutor
辅助工具类
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第305张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第306张图片
在这里插入图片描述
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第307张图片
一池固定线程、一池一线程、一池多线程
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第308张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第309张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第310张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第311张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第312张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第313张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第314张图片

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第315张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第316张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第317张图片

线程池7大参数入门简介

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第318张图片
在这里插入图片描述
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第319张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第320张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第321张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第322张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第323张图片

线程池7大参数深入介绍

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第324张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第325张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第326张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第327张图片

线程池底层工作原理

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第328张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第329张图片

线程池用过吗?生产上你如何设置合理参数。

在这里插入图片描述

线程池的4种拒绝策略理论简介

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第330张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第331张图片
在这里插入图片描述
从而降低任务流量。

线程池实际中使用哪一个

在这里插入图片描述
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第332张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第333张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第334张图片
无界的阻塞队列
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第335张图片

线程池的手写改造和拒绝策略

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第336张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第337张图片
最高几个客户来办业务,就报拒绝了
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第338张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第339张图片
默认的拒绝策略:马上报异常
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第340张图片
调用者运行机制:不会抛弃任务也不会抛出异常,而是将某些任务回退到调用者,从而降低新任务的流量
谁让你调用我的,那么你就去找他
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第341张图片

抛弃队列中等待时间最久的任务
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第342张图片
这样的话只能完成8个人的业务,剩下的就直接丢弃了

线程池配置合理线程数

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第343张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第344张图片
在这里插入图片描述
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第345张图片

死锁编码及定位分析

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第346张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第347张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第348张图片

单线程不可能有死锁!没人跟你抢,你怎么会死锁。

两把锁

持有自己的锁还妄图得到别人的锁。
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第349张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第350张图片

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第351张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第352张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第353张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第354张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第355张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第356张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第357张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第358张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第359张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第360张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第361张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第362张图片

尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第363张图片
尚硅谷-互联网大厂高频重点面试题 (第2季)JUC多线程及高并发_第364张图片

你可能感兴趣的:(找工作,JUC)