Java高并发面试必考20题详解
Java高并发多线程基础面试清单
线程与进程的区别
进程是操作系统资源分配的最小单位,线程是CPU调度的最小单位。一个进程可以包含多个线程,线程共享进程的内存空间。进程之间相互独立,线程之间可以共享数据。
生活案例:进程像一家公司,线程是公司里的员工。公司有独立的办公场地(内存空间),员工共享办公资源(打印机、会议室),但各自处理不同任务。
线程的创建方式
继承Thread类并重写run方法。这种方式简单但不利于扩展,因为Java不支持多重继承。
实现Runnable接口并实现run方法。推荐使用这种方式,因为可以避免单继承限制,且更适合资源共享。
实现Callable接口。与Runnable类似,但可以返回结果和抛出异常,通常配合FutureTask使用。
// Runnable示例
class MyRunnable implements Runnable {
public void run() {
System.out.println("线程运行中");
}
}
synchronized关键字
synchronized是Java内置的锁机制,用于保证线程安全。可以修饰实例方法、静态方法或代码块。修饰实例方法时锁是当前对象实例,修饰静态方法时锁是当前类的Class对象。
生活案例:公共卫生间是共享资源,synchronized就像门锁。一个人使用时锁门(获取锁),其他人必须等待(阻塞)。
volatile关键字
volatile保证变量的可见性,但不保证原子性。当一个线程修改volatile变量时,新值会立即写入主内存,其他线程读取时直接从主内存获取。
生活案例:公告板上的通知。任何人修改通知内容(写操作)都会立即更新到公告板(主内存),其他人看到的是最新内容。
线程生命周期
新建(New):线程被创建但未启动。
就绪(Runnable):调用start()后,线程等待CPU调度。
运行(Running):线程获得CPU资源,执行run方法。
阻塞(Blocked):线程等待获取锁或等待I/O操作完成。
终止(Terminated):线程执行完毕或异常退出。
线程池核心参数
核心线程数(corePoolSize):线程池长期维持的线程数量。
最大线程数(maximumPoolSize):线程池允许的最大线程数量。
存活时间(keepAliveTime):非核心线程空闲时的存活时间。
工作队列(workQueue):用于存放待执行任务的阻塞队列。
线程工厂(threadFactory):用于创建新线程。
拒绝策略(handler):当任务无法被处理时的策略。
常见线程池类型
FixedThreadPool:固定大小线程池,核心线程数等于最大线程数。
CachedThreadPool:可缓存线程池,线程数量根据需要自动调整。
SingleThreadExecutor:单线程线程池,保证任务顺序执行。
ScheduledThreadPool:支持定时及周期性任务执行的线程池。
死锁条件与避免
死锁产生的四个必要条件:互斥条件、请求与保持条件、不剥夺条件、循环等待条件。
避免死锁的方法:破坏任一条件即可。常用方法包括按固定顺序获取锁、设置锁超时时间、使用锁检测机制等。
CAS原理
CAS(Compare And Swap)是乐观锁的实现方式。包含三个操作数:内存值V、预期值A、新值B。当且仅当V等于A时,才将V更新为B,否则不执行任何操作。
生活案例:寄存柜取物。假设寄存柜当前号码是123(V),你记得存放时号码是123(A),只有两者匹配时才能用新号码456(B)更新。
AQS框架
AQS(AbstractQueuedSynchronizer)是构建锁和同步器的基础框架。核心思想是通过一个volatile的int变量表示状态,配合FIFO队列管理线程的排队工作。
ReentrantLock、CountDownLatch等同步工具都是基于AQS实现的。AQS支持独占模式和共享模式两种同步方式。
ThreadLocal原理
ThreadLocal为每个线程提供独立的变量副本,实现线程隔离。内部通过ThreadLocalMap存储数据,key是弱引用的ThreadLocal实例,value是存储的值。
内存泄漏风险:ThreadLocalMap的key是弱引用,但value是强引用。如果ThreadLocal实例被回收而线程仍在运行,value会一直存在。使用后应及时调用remove方法清理。
BbS.okane040.info/PoSt/1121_678307.HtM
BbS.okane041.info/PoSt/1121_670595.HtM
BbS.okane042.info/PoSt/1121_561026.HtM
BbS.okane043.info/PoSt/1121_322542.HtM
BbS.okane044.info/PoSt/1121_353718.HtM
BbS.okane045.info/PoSt/1121_335314.HtM
BbS.okane046.info/PoSt/1121_579683.HtM
BbS.okane047.info/PoSt/1121_978986.HtM
BbS.okane048.info/PoSt/1121_233022.HtM
BbS.okane049.info/PoSt/1121_738123.HtM
BbS.okane040.info/PoSt/1121_829317.HtM
BbS.okane041.info/PoSt/1121_914132.HtM
BbS.okane042.info/PoSt/1121_416819.HtM
BbS.okane043.info/PoSt/1121_767228.HtM
BbS.okane044.info/PoSt/1121_703870.HtM
BbS.okane045.info/PoSt/1121_847066.HtM
BbS.okane046.info/PoSt/1121_260780.HtM
BbS.okane047.info/PoSt/1121_293030.HtM
BbS.okane048.info/PoSt/1121_675090.HtM
BbS.okane049.info/PoSt/1121_301451.HtM
BbS.okane040.info/PoSt/1121_403854.HtM
BbS.okane041.info/PoSt/1121_948428.HtM
BbS.okane042.info/PoSt/1121_740015.HtM
BbS.okane043.info/PoSt/1121_791899.HtM
BbS.okane044.info/PoSt/1121_715965.HtM
BbS.okane045.info/PoSt/1121_391235.HtM
BbS.okane046.info/PoSt/1121_440291.HtM
BbS.okane047.info/PoSt/1121_609855.HtM
BbS.okane048.info/PoSt/1121_216632.HtM
BbS.okane049.info/PoSt/1121_960679.HtM
BbS.okane040.info/PoSt/1121_905594.HtM
BbS.okane041.info/PoSt/1121_146190.HtM
BbS.okane042.info/PoSt/1121_161152.HtM
BbS.okane043.info/PoSt/1121_491575.HtM
BbS.okane044.info/PoSt/1121_925905.HtM
BbS.okane045.info/PoSt/1121_386043.HtM
BbS.okane046.info/PoSt/1121_483766.HtM
BbS.okane047.info/PoSt/1121_575693.HtM
BbS.okane048.info/PoSt/1121_533331.HtM
BbS.okane049.info/PoSt/1121_273861.HtM
BbS.okane040.info/PoSt/1121_919494.HtM
BbS.okane041.info/PoSt/1121_228798.HtM
BbS.okane042.info/PoSt/1121_085243.HtM
BbS.okane043.info/PoSt/1121_340749.HtM
BbS.okane044.info/PoSt/1121_764697.HtM
BbS.okane045.info/PoSt/1121_104387.HtM
BbS.okane046.info/PoSt/1121_755422.HtM
BbS.okane047.info/PoSt/1121_120897.HtM
BbS.okane048.info/PoSt/1121_476805.HtM
BbS.okane049.info/PoSt/1121_815205.HtM
BbS.okane040.info/PoSt/1121_313838.HtM
BbS.okane041.info/PoSt/1121_781131.HtM
BbS.okane042.info/PoSt/1121_676532.HtM
BbS.okane043.info/PoSt/1121_287962.HtM
BbS.okane044.info/PoSt/1121_784153.HtM
BbS.okane045.info/PoSt/1121_668575.HtM
BbS.okane046.info/PoSt/1121_855771.HtM
BbS.okane047.info/PoSt/1121_138719.HtM
BbS.okane048.info/PoSt/1121_061591.HtM
BbS.okane049.info/PoSt/1121_500285.HtM
BbS.okane040.info/PoSt/1121_589914.HtM
BbS.okane041.info/PoSt/1121_130943.HtM
BbS.okane042.info/PoSt/1121_121154.HtM
BbS.okane043.info/PoSt/1121_464962.HtM
BbS.okane044.info/PoSt/1121_384954.HtM
BbS.okane045.info/PoSt/1121_143482.HtM
BbS.okane046.info/PoSt/1121_675777.HtM
BbS.okane047.info/PoSt/1121_309147.HtM
BbS.okane048.info/PoSt/1121_136721.HtM
BbS.okane049.info/PoSt/1121_044901.HtM
BbS.okane040.info/PoSt/1121_101143.HtM
BbS.okane041.info/PoSt/1121_541781.HtM
BbS.okane042.info/PoSt/1121_236513.HtM
BbS.okane043.info/PoSt/1121_583646.HtM
BbS.okane044.info/PoSt/1121_935761.HtM
BbS.okane045.info/PoSt/1121_654534.HtM
BbS.okane046.info/PoSt/1121_810326.HtM
BbS.okane047.info/PoSt/1121_147288.HtM
BbS.okane048.info/PoSt/1121_017074.HtM
BbS.okane049.info/PoSt/1121_654049.HtM
查看22道真题和解析