排序
面试题:Java 线程池有哪些拒绝策略?
在 Java 的 java.util.concurrent 包中,线程池通过 ThreadPoolExecutor 类来管理任务的执行。 当提交的任务超过了线程池的最大容量(即核心线程数加上队列容量)时,就需要一种策略来处理这些...
面试题:你使用过 Java 的累加器吗?
在 Java 中,“累加器”(Accumulator)通常指的是用于多线程环境下高效执行累加操作的并发工具类。Java 提供了多种方式来实现累加器,其中最常用的是: ✅ 一、AtomicInteger / AtomicLong 这...
面试题: 为什么在 Java 中需要使用 ThreadLocal?
在Java中,ThreadLocal 提供了一种线程局部变量的机制,这意味着每个使用某 ThreadLocal 变量的线程都有自己独立初始化的副本。这种机制有几个关键的应用场景和优势,解释了为什么在某些情况下...
面试题:如何优化 Java 中的锁的使用?
在 Java 中优化锁的使用可以显著提高应用程序的性能,尤其是在高并发场景下。以下是一些优化锁使用的策略: 减少锁的作用域:尽量缩小同步代码块的范围,只锁定必要的代码段,而不是整个方法。...
面试题:Volatile 与 Synchronized 的区别是什么?
在 Java 中,volatile 和 synchronized 都是用于确保线程之间的可见性和有序性,但它们的作用和使用场景有着明显的区别。以下是它们的主要区别: 1. 可见性 volatile:保证了变量的可见性,即当...
面试题:Java 线程池中 shutdown 与 shutdownNow 的区别是什么?
在 Java 的 ExecutorService 接口中,shutdown() 和 shutdownNow() 都是用来关闭线程池的方法,但它们的行为和效果有所不同。理解两者之间的差异对于正确管理线程池的生命周期至关重要。 shutdo...
面试题:你使用过哪些 Java 并发工具类?
在 Java 并发编程中,我使用过以下常用的并发工具类(均属于 java.util.concurrent 包),它们各自适用于不同的并发控制和线程协作场景: ✅ 1. CountDownLatch(倒计数锁存器) 📌 使用场景: ...
面试题:Java 中 volatile 关键字的作用是什么?
volatile 是 Java 中的一个关键字,用于声明变量可以在程序的其他部分被修改,尤其是在多线程环境下。它的主要作用是保证变量的可见性和禁止指令重排序优化,但不会提供原子性操作。下面详细解...
面试题:Synchronized 修饰静态方法和修饰普通方法有什么区别?
在 Java 中,synchronized 关键字可以用来修饰实例方法、静态方法或者代码块。当它用于修饰静态方法和普通(实例)方法时,存在一些重要的区别,主要体现在锁的对象以及锁定的范围上。 锁定对象...
面试题:在 Java 中主线程如何知晓创建的子线程是否执行成功?
在Java中,主线程想要知晓其创建的子线程是否执行成功,可以通过以下几种方式来实现: 1. 使用 Thread.join() 方法 join() 方法允许一个线程等待另一个线程完成。通过调用子线程...
