文章目录
-
- 什么是进程?什么是线程?什么是协程?三者之间的联系与区别?
- 什么是僵尸进程?什么是孤儿进程?
- 什么是守护线程?守护线程和用户线程有什么区别呢?
- 如何在 Windows 和 Linux 上查找哪个线程cpu利用率最高?
- 说一说并发和并行的区别?
- 为什么要进行多线程(并发)编程?多线程编程有什么缺点?
- 说一说线程的生命周期以及对应的状态?Java多线程中分别调用什么方法能够转换为下一个状态?
- 什么是线程死锁?如何避免死锁?写个Java死锁代码?
- 什么是线程上下文切换?
-
- Java中创建线程有哪几种方式?
- 说一下 runnable 和 callable 有什么区别?
- 线程的 run()和 start()有什么区别?启动线程调用run()不行吗?
- 什么是 Callable 和 Future?
- 说一说FutureTask?
- Java 中用到的线程调度算法是什么?线程的调度策略?什么是线程调度器(Thread Scheduler)和时间分片(Time Slicing )?
- sleep() 、wait()和 yield() 有什么区别?
- 为什么线程通信的方法 wait(), notify()和 notifyAll()被定义在 Object 类里?
- Thread 类中的 yield 方法有什么作用?为什么Thread 类的 sleep()和 yield ()方法是静态的?
- notify() 和 notifyAll() 有什么区别?
- interrupt()、isInterrupted()和interrupted()方法有什么区别?
-
- 说一说JMM(Java内存模型)?
- 知道ThreadLocal吗?有什么作用?知道原理吗?碰到过ThreadLocal内存泄漏问题吗?
- 什么是指令重排序?happens-before知道吗?as-if-serial语义知道吗?
- 什么是伪共享?如何避免?
-
- 乐观锁和悲观锁
- 公平锁和非公平锁
- 独占锁和共享锁
- 什么是可重入锁
- 什么是自旋锁
- 锁升级过程?
- 什么是CAS
- LockSupport
- Condition
-
voliate、synchronized、reentrantLock
- voliate关键字以及 voliate实现原理?
- synchronized锁以及synchronized底层实现原理?
- reentrantLock及reentrantLock原理?
- reentrantLock和synchronized和voliate的区别?
-
并发容器
-
多线程阻塞队列(AQS)
-
- 线程池参数
- 线程池拒绝策略
- 等待队列(阻塞队列)
-
- CountDownLatch
- CyclicBarrier
- Semaphore