猿java

猿java的博客

在作为Java程序员,我们都知道`Thread.sleep()`是用于线程睡眠,那么,`Thread.sleep(0)`是做什么用呢?这篇文章,我们就来聊一聊。
阅读全文 »

Rust 的所有权系统是编程语言设计中的一次重大创新,它在不依赖垃圾回收机制的情况下,通过编译时的静态检查来保证内存安全。这种机制不仅避免了许多常见的内存错误,如空指针、悬垂指针和数据竞争,还显著提高了程序的性能。在这篇文章中,我们将深入探讨 Rust 的所有权系统,了解它是如何保证内存安全的。
阅读全文 »

在并发编程中,ABA问题是一个常见的问题,尤其是在使用乐观锁或无锁算法时,虽然这个问题并不是 Java特有的,但在Java中,当使用与CAS(Compare-And-Swap,比较并交换)相关的操作时,ABA问题尤为突出。这篇文章,我们来详细的聊一聊什么是 ABA问题?如何解决?
阅读全文 »

ForkJoinPool 是 Java 7 引入的一种线程池实现,专门用于支持“大规模并行”任务的执行。它是 Java 并发框架中的一部分,主要用于处理可以递归地分解为更小任务的问题。ForkJoinPool 的设计目标是有效利用多核处理器的计算能力,以提高程序的性能。这篇文章我们来聊聊ForkJoinPool是如何工作的!
阅读全文 »

`CountDownLatch` 是 Java 中的一个用于管理并发控制的同步辅助类,作用是允许一个或多个线程等待其他线程完成操作。顾名思义,它的工作机制类似于“倒计时闩锁”,线程会阻塞等待,直到闩锁的计数器减少到 0,然后才能继续执行。这篇文章,我们将深度剖析其原理。
阅读全文 »

在 Java的线程池管理中,`shutdown()`和`shutdownNow()`是用于关闭线程池的两种方法,尽管都是为了关闭线程池,但它们存在显著差异。这篇文章,我们将详细阐述它们的工作原理。
阅读全文 »

Java 线程池中的拒绝策略是线程池框架提供的一种机制,用于处理当线程池中的任务队列已满且没有空闲线程可用来执行新任务时的情况。这篇文章,我们来一起了解这些拒绝策略的原理、源码实现及其适用场景。
阅读全文 »

在 Java中,线程是执行的最小单元,那么线程之间是如何通信的呢?这篇文章我们一起来聊一聊常见的5种方式。
阅读全文 »

缓存(Cache)策略在计算机系统中起着至关重要的作用,它们决定了数据如何在存储层次结构中流动和被管理,缓存策略的选择可以显著影响系统的性能、可靠性和复杂性。这篇文章,我们来分析 6种常见缓存策略。
阅读全文 »