并发编程面试八股文背诵版
文章目录:
-
什么是进程?是什么线程? * * *
-
进程和线程的关系?(区别) * * *
-
并行和并发的区别? *
-
多线程的优缺点(为什么使用多线程、多线程会引发什么问题) * *
-
线程的上下文切换 *
-
Java中守护线程和用户线程的区别? *
-
线程死锁是如何产生的,如何避免 * * *
-
用Java实现死锁,并给出避免死锁的解决方案 * *
-
Java中的死锁、活锁、饥饿有什么区别? *
-
线程的生命周期和状态 * * *
-
创建线程一共有哪几种方法? * * *
-
runnable 和 callable 有什么区别? * * *
-
线程的run()和start()有什么区别? * * *
-
为什么调用start()方法时会执行run()方法,而不直接执行run()方法? * * *
-
线程同步和线程调度相关的方法问题
-
线程同步以及线程调度相关的方法有哪些? * * *
-
线程的sleep()方法和yield()方法有什么不同? * * *
-
sleep()方法和wait()方法的区别? * * *
-
wait()方法一般在循环块中使用还是if块中使用? * * *
-
线程通信的方法有哪些? * * *
-
为什么wait()、notify()、notifyAll()被定义在Object类中而不是在Thread类中? * *
-
为什么wait(),notify()和notifyAll()必须在同步方法或者同步块中被调用? * *
-
为什么Thread类的sleep()和yield()方法是静态的? *
-
如何停止一个正在运行的线程? * *
-
如何唤醒一个阻塞的线程? * *
-
Java如何实现两个线程之间的通信和协作? * *
-
同步方法和同步方法块哪个效果更好? * *
-
什么是线程同步?什么是线程互斥?他们是如何实现的? * * *
-
在Java程序中如何保证线程的运行安全? * * *
-
线程类的构造方法、静态块是被哪个线程调用的? *
-
一个线程运行时异常会发生什么? *
-
线程数量过多会造成什么异常? *
-
-
三个线程T1、T2、T3,如何让他们按顺序执行? * * *
-
synchronized关键字 * * *
-
什么是synchronized关键字?
-
Java内存的可见性问题
-
synchronized关键字三大特性是什么?
-
synchronized关键字可以实现什么类型的锁?
-
synchronized关键字的使用方式
-
synchronized关键字的底层原理
-
Jdk1.6为什么要对synchronized进行优化?
-
jDK1.6对synchronized做了哪些优化?
-
-
volatile关键字 * * *
-
volatile的作用是什么?
-
volatile的特性有哪些?
-
Java内存的可见性问题
-
为什么代码会重排序?
-
重排序会引发什么问题?
-
as-if-serial规则和happens-before规则的区别?
-
voliatile的实现原理?
-
volatile实现内存可见性原理
-
volatile实现有序性原理
-
编译器对内存屏障插入策略的优化
-
volatile能使一个非原子操作变成一个原子操作吗?
-
volatile、synchronized的区别?
-
-
ConcurrentHashMap * * *
-
什么是ConcurrentHashMap?相比于HashMap和HashTable有什么优势?
-
java中ConcurrentHashMap是如何实现的?
-
ConcurrentHashMap结构中变量使用volatile和final修饰有什么作用?
-
ConcurrentHashMap有什么缺点?
-
ConcurrentHashMap默认初始容量是多少?每次扩容为原来的几倍?
-
ConCurrentHashMap 的key,value是否可以为null?为什么?HashMap中的key、value是否可以为null?
-
ConCurrentHashmap在JDK1.8中,什么情况下链表会转化为红黑树?
-
ConcurrentHashMap在JDK1.7和JDK1.8版本中的区别?
-
ConcurrentHashMap迭代器是强一致性还是弱一致性?
-
-
ThreadLocal * * *
-
什么是ThreadLocal?有哪些应用场景?
-
ThreadLocal原理和内存泄露?
-
-
线程池 * * *
-
什么是线程池?为什么使用线程池
-
创建线程池的几种方法
-
ThreadPoolExecutor构造函数的重要参数分析
-
ThreadPoolExecutor的饱和策略(拒绝策略)
-
线程池的执行流程
-
execute()方法和submit()方法的区别
-
-
CAS * * *
-
什么是CAS?
-
CAS存在的问题
-
CAS的优点
-
-
Atomic 原子类 * *
-
AQS * *
-
什么是AQS?
-
AQS的原理
-
AQS的资源共享方式有哪些?
- 如何使用AQS自定义同步器?
-
-