摘要:
1. 概述 在本教程中,我们将学习是什么使对象不可变,如何在 Java 中实现不可变性,以及这样做有什么好处。 2. 什么是不可变对象? 不可变对象是其内部状态在完全创建后保持不变的对象。 这意味着不可变对象的公共 API 保证了它在其整个生命周期中的行为方式相同。 如果我们看一下类 String, 阅读全文
posted @ 2023-02-22 12:56
JackYang
阅读(285)
评论(0)
推荐(0)
摘要:
1. 简介 在本教程中,我们将看到 Java 中一些最常见的并发问题。我们还将学习如何避免它们及其主要原因。 2. 使用线程安全对象 2.1. 共享对象 线程主要通过共享对相同对象的访问来进行通信。因此,在对象更改时从对象读取可能会产生意外的结果。此外,同时更改对象可能会使其处于损坏或不一致的状态。 阅读全文
posted @ 2023-02-22 12:50
JackYang
阅读(108)
评论(1)
推荐(0)
摘要:
1. 简介 在本教程中,我们将了解什么是非阻塞数据结构,以及为什么它们是基于锁的并发数据结构的重要替代方案。 首先,我们将介绍一些术语,例如无障碍、无锁定和无等待。 其次,我们将研究非阻塞算法的基本构建块,如CAS(compare-and-swap)。 第三,我们将研究在Java中实现无锁队列,最后 阅读全文
posted @ 2023-02-22 12:38
JackYang
阅读(625)
评论(0)
推荐(0)
摘要:
1. 概述 在之前的一篇文章中,我们了解到AtomicStampedReference可以防止ABA问题。 在本教程中,我们将仔细研究如何最好地使用它。 2. 为什么我们需要AtomicStampedReference? 首先,AtomicStampedReference为我们提供了一个对象引用变量 阅读全文
posted @ 2023-02-22 12:30
JackYang
阅读(853)
评论(0)
推荐(2)
摘要:
1. 简介 在本教程中,我们将介绍并发编程中 ABA 问题的理论背景。我们将看到它的根本原因以及解决方案。 2. 比较和交换 为了了解根本原因,让我们简要回顾一下比较和交换的概念。 比较和交换 (CAS) 是无锁算法中的常用技术,用于确保一个线程对共享内存的更新在另一个线程同时修改相同空间时失败。 阅读全文
posted @ 2023-02-22 12:17
JackYang
阅读(371)
评论(1)
推荐(0)
摘要:
1. 概述 在本文中,我们将看看JRE提供的一个引人入胜的类 - 不安全的sun.misc包。此类为我们提供了低级机制,这些机制旨在仅供核心 Java 库使用,而不能由标准用户使用。 这为我们提供了主要为核心库内部使用而设计的低级机制。 2. 获取不安全的实例 首先,为了能够使用Unsafe类,我们 阅读全文
posted @ 2023-02-22 12:09
JackYang
阅读(615)
评论(2)
推荐(0)
摘要:
1. 简介 简而言之,当涉及并发时,共享可变状态很容易导致问题。如果未正确管理对共享可变对象的访问,应用程序很快就会变得容易出现一些难以检测的并发错误。 在本文中,我们将重新审视使用锁来处理并发访问,探讨与锁相关的一些缺点,最后引入原子变量作为替代方案。 2. 锁 让我们来看看: public cl 阅读全文
posted @ 2023-02-22 12:04
JackYang
阅读(105)
评论(2)
推荐(0)
摘要:
1. 概述 在本教程中,我们将研究java.lang包中的ThreadLocal构造。这使我们能够单独存储当前线程的数据,并简单地将其包装在特殊类型的对象中。 2.ThreadLocal 接口 TheadLocal构造允许我们存储只能由特定线程访问的数据。 假设我们想要一个将与特定线程捆绑在一起的I 阅读全文
posted @ 2023-02-22 11:43
JackYang
阅读(104)
评论(1)
推荐(0)
摘要:
1. 概述 Java 支持开箱即用的多线程。这意味着通过在单独的工作线程中并发运行字节码,JVM能够提高应用程序性能。 虽然多线程是一个强大的功能,但它是有代价的。在多线程环境中,我们需要以线程安全的方式编写实现。这意味着不同的线程可以访问相同的资源,而不会暴露错误行为或产生不可预知的结果。这种编程 阅读全文
posted @ 2023-02-22 11:39
JackYang
阅读(234)
评论(1)
推荐(0)
摘要:
1. 概述 在本教程中,我们将讨论孵化器功能结构化并发 (JEP 428),它为 Java 19 提供了结构化并发功能。我们将指导你使用新的 API 来管理多线程代码。 2. 理念 通过采用并发编程风格来降低线程泄漏和取消延迟的可能性,从而增强多线程代码的可维护性、可靠性和可观察性,这是与取消和关闭 阅读全文
posted @ 2023-02-22 11:21
JackYang
阅读(426)
评论(0)
推荐(0)
浙公网安备 33010602011771号