
JUC
文章平均质量分 94
java并发编程
luming.02
阿里云专家博主 | 华为云云享专家 | 2023年延安市博客之星第一名 | 致力于专研 JavaSE/JavaEE | 数据结构与算法 | 数据库 | 计算机网络 | 致力于Java领域的优质博客分享,永远怀着一颗学徒的心
展开
-
图文详解ThreadLocal:原理、结构与内存泄漏解析
本文深入探讨了Java中的ThreadLocal机制,揭示了其背后的核心原理和内部结构。通过图文并茂的方式,我们不仅解释了ThreadLocal的使用方法,还分析了它可能导致内存泄漏的原因,并提供了预防和解决方案。无论你是Java新手还是资深开发者,本文都将帮助你更全面地理解ThreadLocal,并在实际开发中更安全地使用它。原创 2024-08-21 10:00:00 · 9030 阅读 · 60 评论 -
【并发编程】什么是CAS?Java是如何实现CAS操作的?
在Java并发编程中,CAS 代表 "Compare-And-Swap"(交换并比较),这是一种用于实现无锁编程的原子操作。CAS操作通常用于多线程环境中,以确保在没有使用传统锁的情况下,能够安全地更新共享数据。CAS是通过CPU级别的原子指令来实现的,这意味着一个CAS操作就是一个原子操作,该操作一旦开始就不能被打断,必须等待它完成。内存值(V):这是要更新的变量的当前值。旧的预期值(A):这是执行CAS操作前,线程预期的内存值。原创 2024-08-21 09:30:00 · 1496 阅读 · 2 评论 -
一图流解释Java中线程状态的转换
当线程对象被创建时,它处于新建状态。此时线程还没有开始执行。当线程对象被创建后,其他线程调用了该线程的start()方法,该线程进入就绪状态。处于就绪状态的线程可能正在等待CPU时间片,一旦获取到CPU时间片,就可以执行。线程获取到CPU时间片后,开始执行任务,处于运行状态。线程在某些情况下会进入阻塞状态,如调用sleep()方法、等待I/O操作完成、试图获取锁时被其他线程获取等。在这些情况下,线程暂时停止执行。线程进入等待状态是因为调用了wait()方法或类似的方法,该状态下线程会等待其他线程显式地唤醒。原创 2024-05-15 09:30:00 · 1728 阅读 · 23 评论 -
图文详解JUC:Wait与Sleep的区别与细节
wait() 和sleep() 是Java中用于线程控制的两个不同方法:wait()方法属于Object类,因此只能在同步代码块或同步方法中调用,并且必须通过持有对象的锁来调用。sleep()方法是Thread类的静态方法,可以在任何地方直接调用。在调用wait()方法时,线程会释放对象的锁,并进入等待状态,直到被其他线程调用notify()或notifyAll()唤醒。调用sleep()方法时,线程不会释放锁,它只是暂时放弃CPU的执行权,但其他线程依然无法访问该线程持有的锁... ...原创 2024-05-15 09:00:00 · 1146 阅读 · 6 评论 -
Java多线程:常见的线程的创建方法及Thread类详解
线程是程序的执行流程的最小单元,一个进程(程序的执行实例)可以由一个或多个线程组成,每个线程都有自己的执行路径和执行状态。线程可以并发执行,即多个线程可以同时在不同的处理器核心或计算机上运行,从而提高程序的运行效率。线程与进程的区别在于,进程是操作系统对一个正在运行的程序的抽象,而线程是进程内部的一个执行单位。一个进程可以有多个线程,这些线程共享进程的资源,如内存空间、文件描述符等。线程之间可以通过共享内存的方式进行通信,相比于进程间通信(如管道、消息队列)的开销更小。原创 2024-05-07 09:30:00 · 1343 阅读 · 66 评论 -
图文详解:synchronized关键字 及其底层原理
本文旨在分享如何解决线程安全问题,通过详细的解释和图示讲解了Java中的synchronized关键字的使用方法和具体细节,Java标准库中对于synchronized的使用。线程安全是指在多线程环境下,对共享资源的访问不会导致数据不一致或出现意外结果的特性。在多线程程序中,多个线程可以同时访问和操作共享数据,如果没有适当的同步机制和保护措施,可能会导致数据竞争和不一致的问题。原创 2024-05-13 08:31:41 · 2105 阅读 · 46 评论 -
锁策略详解:互斥锁、读写锁、乐观锁与悲观锁、轻量级锁与重量级锁、自旋锁、偏向锁、可重入锁与不可重入锁、公平锁与非公平锁
锁策略指的是在多线程编程中用于管理共享资源访问的规则和技术。它们确保在任何给定时间只有一个线程可以访问共享资源,以防止竞态条件和数据不一致性问题。常见的锁策略包括:互斥锁(Mutex):最常见的锁类型,用于确保同一时刻只有一个线程可以访问共享资源。其他线程必须等待当前线程释放锁。读写锁(ReadWriteLock):允许多个线程同时读取共享资源,但只有一个线程可以写入共享资源。这有助于提高并发性能,因为读取操作不会阻塞其他读取操作。悲观锁(Pessimistic Locking):假设会发生并发...原创 2024-05-13 08:32:29 · 1275 阅读 · 25 评论