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

#牛客AI配图神器#

全部评论

相关推荐

不愿透露姓名的神秘牛友
10-09 16:39
已编辑
英俊的靓仔offer...:我感觉吧第二个寻迹小车的项目有点配不上你的学历了,写上去扣分了都可能对你来说,好歹是211硕士嘛,写在我这种二本混子的简历上还说得过去,个人观点哦,能再有个好点的项目应该会好很多,或者干脆不写第二个换个啥实习经历?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务