Java 并发编程共59篇

Java 并发编程是高性能应用开发的重要环节。Java 并发面试题的考察重点包括线程的创建与管理、线程池的使用、同步机制(如锁、volatile 关键字)、原子类、并发容器、AQS 框架、CAS 原理、线程安全问题的排查以及高并发场景下的性能优化。

面试题:什么是 Java 中的锁自适应自旋?

锁自适应自旋(Adaptive Spinning) 是 JVM 对自旋锁的一种优化机制,旨在根据锁的历史竞争情况动态调整自旋的次数,以提高锁获取的效率并减少不必要的 CPU 资源浪费。 1. 自旋锁的背景 在 Java...
程序百科的头像-程序百科程序百科1个月前
0479

面试题:当 Java 的 synchronized 升级到重量级锁后,所有线程都释放锁了,此时它还是重量级锁吗?

当 Java 的 synchronized 升级到重量级锁后,即使所有线程都释放了锁,锁的状态不会立即降级,仍然会保持为重量级锁。 1. 重量级锁的背景 重量级锁是 Java 中 synchronized 的最高级别锁状态。...
程序百科的头像-程序百科程序百科1个月前
0439

面试题:Java 中的 synchronized 轻量级锁是否会进行自旋?

是的,Java 中的 synchronized 轻量级锁在竞争时会进行 自旋。 1. 轻量级锁的背景 轻量级锁是 JVM 为了减少线程阻塞和上下文切换的开销而引入的一种优化机制。它的核心思想是:当多个线程竞争锁...
程序百科的头像-程序百科程序百科1个月前
0325

面试题:Java 的 synchronized 是怎么实现的?

synchronized 是 Java 中用于实现线程同步的关键字,它可以用来修饰方法或代码块,确保同一时间只有一个线程可以执行被修饰的代码。synchronized 的实现主要依赖于 Java 对象头中的&n...
程序百科的头像-程序百科程序百科1个月前
02213

面试题:Java 中 ReentrantLock 的实现原理是什么?

ReentrantLock 是 Java 中基于 AQS(AbstractQueuedSynchronizer) 实现的一种可重入独占锁。它提供了比 synchronized 更灵活的锁机制,支持公平锁和非公平锁,并且可以响应中断、设置超时等。 ...
程序百科的头像-程序百科程序百科1个月前
04610

面试题:说说 AQS吧?

AQS(AbstractQueuedSynchronizer) 是 Java 并发编程中的一个核心框架,位于 java.util.concurrent.locks 包中。它是构建锁和其他同步工具(如 ReentrantLock、CountDownLatch、Semaphore 等)...
程序百科的头像-程序百科程序百科1个月前
03215

面试题:什么是 Java 的 CAS(Compare-And-Swap)操作?

CAS(Compare-And-Swap) 是一种并发编程中的原子操作,用于实现无锁的线程安全操作。它是现代多核处理器提供的一种硬件指令,Java 通过 sun.misc.Unsafe 类或 java.util.c...
程序百科的头像-程序百科程序百科1个月前
03513

面试题:你使用过 Java 的累加器吗?

Java 中的 累加器(Accumulator) 是 java.util.concurrent.atomic 包中提供的一种高效的工具,用于在多线程环境下进行累加操作。累加器的主要实现类是 LongAdder&nbs...
程序百科的头像-程序百科程序百科1个月前
02212

面试题:你使用过 Java 中的哪些原子类?

Java 中的 原子类(Atomic Classes) 是 java.util.concurrent.atomic 包中提供的一组线程安全的类,用于在多线程环境下实现无锁的原子操作。这些类通过 CAS(Compare-And-...
程序百科的头像-程序百科程序百科1个月前
03612

面试题:你使用过 Java 中的哪些阻塞队列?

Java 中的 阻塞队列(BlockingQueue) 是 java.util.concurrent 包中提供的一种线程安全的队列实现。它支持在队列为空时阻塞获取操作,在队列满时阻塞插入操作。以下是 Jav...
程序百科的头像-程序百科程序百科1个月前
03911