线程的基础知识
线程和进程的区别
并行和并发的区别
创建线程的方式有哪些
项目中使用 线程池来创建线程
继承thread类重写run方法
实现runnable接口
实现callable接口
重写call方法 带返回值
线程池创建线程
线程包括哪些状态,状态之间是如何变化的
新建T1、T2、T3三个线程,如何保证他们按顺序执行
notify()和notifyAll()有什么区别?
Java中wait和sleep方法的不同?
如何停止一个正在运行的线程?
实际开发中,最好使用第一种或者第三种
线程中并发安全
synchronized关键字的底层原理
Monitorenter 上锁
Monitorexit 解锁
JMM(Java内存模型)
CAS
乐观锁和悲观锁
volatile
AQS
总结
ReenterantLock的实现原理
synchronized和lock的区别
死锁产生的条件
ConcurrentHashMap
导致并发程序出现问题的根本原因(Java程序中如何保证多线程的执行安全)
线程池
线程池的核心参数和执行原理
线程池中有哪些常见的阻塞队列
如何确定核心线程数
N当前cpu的核数
一般在Java中,都是IO密集型任务
线程池的种类有哪些
为什么不建议使用Executor创建线程池
使用场景
线程池使用场景(CountDownLatch、Future)(你们项目哪里用到了多线程)
如何控制某个方法允许并发访问线程的数量
谈谈你对ThreadLocal的理解