排序
面试题:Java 中 ReentrantLock 的实现原理是什么?
ReentrantLock 是 Java 中基于 AQS(AbstractQueuedSynchronizer) 实现的一种可重入独占锁。它提供了比 synchronized 更灵活的锁机制,支持公平锁和非公平锁,并且可以响应中断、设置超时等。 ...
面试题:你了解 Java 线程池的原理吗?
Java 线程池是一种管理和复用线程的机制,旨在减少线程创建和销毁的开销,提高系统性能和资源利用率。线程池的核心思想是预先创建一组线程,并将任务提交到线程池中执行,而不是为每个任务都创...
面试题:Java 线程安全的集合有哪些?
在 Java 中,线程安全的集合是指多个线程可以同时访问和修改而不会导致数据不一致的集合。Java 提供了多种线程安全的集合类,主要分为以下几类: 1. java.util.Collections 工具类提...
面试题:Java 中线程之间如何进行通信?
在 Java 中,线程之间的通信是实现多线程协作的重要手段。线程通信的主要目的是让多个线程能够协调工作,共享数据或通知彼此状态的变化。Java 提供了多种机制来实现线程之间的通信,主要包括以...
面试题:什么是 Java 中的原子性、可见性和有序性?
在 Java 并发编程中,原子性(Atomicity)、可见性(Visibility) 和 有序性(Ordering) 是三个核心概念,它们共同保证了多线程环境下程序的正确性。以下是它们的详细解释: 1....
面试题:Java 线程池有哪些拒绝策略?
在 Java 线程池中,当任务无法被处理时(例如任务队列已满且线程数达到最大值),线程池会触发拒绝策略。Java 提供了四种内置的拒绝策略,均实现了 RejectedExecutionHandler 接口。...
面试题:什么是 Java 的 CompletableFuture?
CompletableFuture 是 Java 8 引入的一个类,位于 java.util.concurrent 包中。它是 Future 接口的一个实现,提供了更强大的异步编程能力。CompletableFuture 不仅支...
面试题:当 Java 的 synchronized 升级到重量级锁后,所有线程都释放锁了,此时它还是重量级锁吗?
当 Java 的 synchronized 升级到重量级锁后,即使所有线程都释放了锁,锁的状态不会立即降级,仍然会保持为重量级锁。 1. 重量级锁的背景 重量级锁是 Java 中 synchronized 的最高级别锁状态。...
面试题:什么是 Java 中的指令重排?
指令重排(Instruction Reordering) 是编译器和处理器为了优化程序性能,在不改变单线程程序执行结果的前提下,对指令执行顺序进行重新排序的一种技术。指令重排是 Java 内存模型(JMM)...
面试题:什么是协程?Java 支持协程吗?
1. 什么是协程? **协程(Coroutine)**是一种比线程更轻量级的并发编程模型。它允许在单个线程中实现多个任务的并发执行,通过挂起和恢复的方式来切换任务,而不是依赖于操作系统的线程调度。...