并发
基础
-
1、什么是线程与进程?
-
2、简述线程与进程的关系,区别以及优缺点?
- 2.1、图解进程和线程的关系?
- 2.2、程序计数器为什么是线程私有?
- 2.3、虚拟机栈和本地方法栈为什么私有?
- 2.4、堆和方法区的作用?
-
3、并行和并发的区别?
-
4、为什么使用多线程?
-
5、使用多线程会带来什么问题?
-
6、线程的生命周期和状态?
-
7、什么是上下文切换?
-
8、什么是线程死锁?如何避免?
-
9、sleep() 和 wait()的异同?
-
10、为什么启动 start() 调用 run(),不直接调用 run() 呢?
进阶
-
1、sychronized关键字
- 1.1、你对sychronized关键字的理解?
- 1.2、有什么过sychronized吗?怎么使用的?
- 1.3、sychronized的底层原理?
- 1.4、在JDK1.6之后有哪些优化?
- 1.5、sychnorized和ReentrantLock异同?
- 1.6、sleep() 、join()、yield()有什么区别?
- 1.7、Synchronized 和 Lock 区别?
- 1.8、单例模式的双重检验锁
-
2、volatile关键字
- 2.1、你对volatile的理解?
- 2.2、volatile和sychronized有什么区别?
- 2.3、写一个使用 volatile 而可以不用 synchronize 的场景
-
3、ThreadLocal
- 3.1、ThreadLocal是什么?
- 3.2、ThreadLocal示例?
- 3.3、ThreadLocal原理?
- 3.4、ThreadLocal内存泄漏问题?
-
4、线程池
- 4.1、线程池是什么?
- 4.2、线程池的好处?
- 4.3、线程池有哪些参数?作用是什么?
- 4.4、线程有哪几种方式?
- 4.5、Runnable()和Callable的区别?
- 4.6、执行excute()和submit()的区别?
- 4.7、线程池的几种创建方法?
- 4.8、Executor框架
- 4.8.1、什么是Executor
- 4.8.2、Executor由哪三部分组成?(任务(Runable和Callable)、任务执行(Executor)、计算结果(Future))
- 4.9、Executor框架使用示意图
- 4.10、ThreadPoolExecutor介绍
- 4.10.1、ThreadPoolExecitor分析
- 4.10.1、推荐使用ThreadPoolExcutor创建线程池
- 4.11、ThreadPoolExecutor使用示例
- 4.11.1、Runnable + ThreadPoolExecutor
- 4.11.2、Callable + ThreadPoolExecutor
- 4.11.3、execute()和submit()的区别
- 4.11.4、shutdown()与shutdowmNow()的区别
- 4.11.5、isTerminated与isShutdown()的区别
-
5、Atomic原子类
- 5.1、什么是Atomic
- 5.2、JUC的原子类中四个类?
- 5.3、简单说一下AtomicInteger类的使用
- 5.4、简单说一下AtomixInteger类的原理
-
6、AQS
- 6.1、什么是AQS?
- 6.2、AQS的原理
- 6.2.1、AQS原理概括
- 6.2.2、AQS对资源的共享方式
- 6.2.3、AQS底层使用的摸板组件
- 6.3、AQS总结
-
7、原理
- 7.1、说说 CountDownLatch 原理
- 7.2、说说 CyclicBarrier 原理
- 7.3、说说 Semaphore 原理
- 7.4、说说 Exchanger 原理
- 7.5、说说 CountDownLatch 与 CyclicBarrier 区别
-
8、阻塞队列的类别和区别?
-
9、Lock
- 9.1、Lock底层实现
- 9.2、Lock的具体用法
-
10、乐观锁与悲观锁
- 10.1、什么是悲观锁
- 10.2、什么是乐观锁
- 10.3、两者有什么区别
- 10.4、应用的场景
- 10.5、乐观锁常见的两种实现机制
- 10.5.1、版本号
- 10.5.2、CAS算法
- 10.6、使用CAS算法存在哪些缺点
- 10.6.1、ABA问题
- 10.6.2、循环时间开销大
- 10.6.3、只能保证一个共享原子变量
- 10.7、CAS与sychronized的区别
-
11、JDK提供的并发容器
- 11.1、有哪些?作用?
- 11.2、concurrentHashMap
- 11.2.1、concurrentHashMap与Hashable的区别
- 11.2.2、concurrent与hashMap的区别
- 11.2.3、concurrentHashMap的底层
- 11.3、CopyAndWriterArrayList
- 11.3.1、简介
- 11.3.2、原理
- 13.3.3、源码分析
- 11.4、concurrentLinkedQueue
- 11.5、BlockingQueue
- 11.5.1、简述
- 11.5.2、ArrayBlockingQueue
- 11.5.3、LinkedBlockingQueue
- PriorityBlocking
- 11.6、concurrentListMap
-
12、高并发极小任务,如何选择线程池?换成长短不一的任务呢?(自定义任务队列)
-
13、多线程如何控制同步的