多线程编程指南

     

Java中ExecutorService与CompletableFuture指南

35 9K

在本教程中,我们将探讨两个重要的 Java 类,用于处理需要并发运行的任务:ExecutorService和CompletableFuture。我们将学习它们的功能以及如何有效地使用它们,并且我们将了.

Java 并发:线程、线程池和执行器全面教程

78 9K

本指南深入研究了Executor接口的内部工作原理及其各种实现。并发的基础知识想象一下餐厅厨房的单一流程。厨房本身就代表了这个过程,准备食物、洗碗和接受订单等各种任务同时发生。现在,线程作为厨房里的厨.

Java中AsynchronousFileChannel不是真正的异步

33

从程序员的角度来看,异步文件 IO 允许在不阻塞调用执行线程的情况下从文件系统读/写数据。也就是说,请求操作的线程。程序员一直可以做到这一点。只需生成一个负责执行 IO 操作的新线程,并允许使用某种机.

Java中原子操作的比较和交换 (CAS)

39 7K

在本文中,我们将深入研究 Java CAS 的机制,揭开它的神秘面纱并了解它如何在实现非阻塞方法方面发挥关键作用。什么是比较和交换 (CAS) 想象一下,你和朋友各有一篮子苹果,你们都想交换一些苹果。.

Java中CountDownLatch与Semaphore比较

50 1 6K

在 Java 多线程中,线程之间的有效协调对于确保正确同步和防止数据损坏至关重要。两种常用的线程协调机制是CountDownLatch和Semaphore。在本教程中,我们将探讨CountDownLa.

jcstress:Java并发压力测试工具

68 1

Java 并发压力 (jcstress) 是实验性工具和一套测试,用于帮助研究 JVM、类库和硬件中并发支持的正确性。为了理解 jcstress 测试并编写自己的测试,完成 jcstress-samp.

Java中多线程异步读写文件

63 7K

当涉及到 Java 中的文件处理时,管理大文件而不引起性能问题可能具有挑战性。通过使用两个线程,我们可以在不阻塞主线程的情况下高效地读与写文件。通过多线程同时执行多个文件操作,利用多核处理器以及将 I.

Java中CountDownLatch教程

38 6K

在本文中,我们将了解如何使用 Java CountDownLatch 编写考虑并发性的测试用例。Java CountDownLatch自版本 1.5 起就可用,它是java.util.concurre.

解决常见Java性能问题的6个技巧

206 11K

虽然 Java 的优势在于其平台独立性、强大的库和广泛的生态系统,但解决性能问题是充分利用其功能的关键。1.内存泄漏有人会问,既然 Java 通过垃圾回收器实现了自动内存管理,这怎么可能呢?的确,Ja.

Node.Js 中异步上下文如何共享与通讯?

52 9K

、在Node.js中,管理异步流之间的上下文是一个挑战,因为它是单线程的。传统的多线程环境中可以使用线程本地存储(TLS)来实现上下文的管理,但在Node.js中不适用。Node.js提供了Async.

Threads Collider:一个Java多线程测试工具

53 3K

Threads Collider尝试在“完全相同”的时刻对多个线程执行所需的操作,以增加出现由竞争条件或死锁引起的问题的机会。code@RepeatedTest(10)void Thread_safe.

Linux线程是无法彻底优雅停止的

56

本文介绍了在Linux系统上如何停止多线程应用程序的方法。作者首先介绍了通过设置布尔变量来实现线程停止的方法,然后讨论了在阻塞系统调用中停止线程的方法,主要通过信号来实现。接着,作者讨论了线程取消的方.

Java中堆转储、线程转储和核心转储比较

74 6K

转储是指从存储介质检索并保存以供后续分析的信息。Java虚拟机(JVM)在Java内存管理中起着至关重要的作用,当出现错误时,可以从JVM中获取转储文件以方便错误诊断。在Java中,堆转储(Heap .

面试官:如何设计Singleton单例?

44 4K

这是自从 Java 流行以来,一个非常流行的 Java 面试问题!这是一个非常简单的问题,为面试官打开了整个房间,可以提出很多后续问题。可以评估 Java 基础知识、设计模式知识,甚至扩展到多线程/其.

操作系统中的进程控制块 (PCB)

91 2K

操作系统中的进程是软件的运行实例。它是操作系统中的一个基本概念,表示 CPU 可以调度和执行的工作单元或任务。 程序与进程:程序是存储在辅助存储器(例如硬盘)中的指令的集合,而进程是主存储器中这些指令.

Java中的管道输入输出流

82 29K

在 Java 中,PipedInputStream和PipedOutputStream是 java.io 包的一部分,通常用于线程间通信。它为一个线程提供了一种通过管道将数据发送到另一个线程的方法。在.

Java 中的 CopyOnWriteArrayList

60 4K

CopyOnWriteArrayList 是 Java 中的一个类,是“java.util.concurrent”包的一部分。它是“ArrayList”类的线程安全变体。CopyOnWriteArra.

Java中的可重入ReadWriteLock

63 4K

并发性是现代软件开发的一个重要方面,Java 提供了一组强大的工具来有效地处理并发性。其中一种工具是“ReentrantReadWriteLock”接口,它允许对共享资源的访问进行细粒度控制。在这篇博.

Java中ThreadLocal与Thread比较

57 5K

Thread和ThreadLocal这两个概念在 Java 多线程编程方法中至关重要。了解这两者之间的区别以及它们各自的优点和局限性对于任何旨在编写高效且健壮的多线程应用程序的 Java 开发人员至关.

Java中如何使用lambda实现懒加载?

77 5K

当我们使用需要执行昂贵或缓慢方法的资源(例如数据库查询或 REST 调用)时,我们倾向于使用本地缓存或私有字段。lambda 函数允许我们使用方法作为参数并推迟方法的执行或完全省略它。在本教程中,我们.

Java中AtomicReference与volatile比较

71

在Java中,AtomicReference和volatile都是用于处理多线程编程中的可见性和原子性的工具,但它们有一些关键的区别。可见性:volatile关键字保证了变量的可见性。当一个线程修改了.

什么是CPU亲和力?何时使用?

153 3K

CPU 亲和力(CPU affinity)是指在多处理器系统中,将一个进程或线程绑定到特定的CPU核心或处理器上,以限制其在系统中运行的位置。这样的做法可以带来一些性能上的优势,但也需要小心使用,因为.

Java 21 中的虚拟线程

109 3K

在不断发展的编程语言和技术领域,Java 始终是构建健壮且可扩展的应用程序的基石。在每次迭代中,Java 都会引入新功能来应对现代开发挑战。Java 21为表带来了一个突破性的特性——虚拟线程。虚拟线.

线程安全Collections.synchronizedMap与并发ConcurrentHashMap之间区别

74

Collections.synchronizedMap()和ConcurrentHashMap都提供对数据集合的线程安全操作。SynchronizedMap: 每个方法都使用对象级锁进行同步。因此,s.

线程安全与并发区别

204

在并发编程中,"线程安全 "和 "并发 "是相关的概念,但它们有着不同的含义。线程安全 如果一个类或方法可以同时被多个线程使用,而不会导致数据损坏或意外行为,那么这个类或方法就被认为是线程安全的。 即.

Java中实现合并排序的三种方法

94 14K

合并排序是一种流行的排序算法,它通过将数组或列表划分为较小的子数组,对它们进行独立排序,然后将它们合并在一起来有效地对数组或列表进行排序。它以其有效性、稳定性和处理庞大数据集的能力而闻名。简单多线程通.

Loom是Java中的超线程?

93
Loom 中的虚拟线程就是 JVM 上超线程(HyperThreading)的一个版本吗?虚拟线程与超线程不同两者之间存在差异,最显着的是:超线程不需要像 Loom 那样进行任务协作,因此虚拟核心不能.

综合指南:如何确定 Java 线程池大小

128 1 10K

Java 中的线程创建会产生显着的成本。创建线程会消耗时间,增加请求处理的延迟,并且涉及 JVM 和操作系统的大量工作。为了减轻这些开销,线程池发挥了作用。在本文中,我们将深入研究确定理想线程池大小的.

Java中semaphore信号量使用场景

145 3K

在Java的并发API中,信号量是另一种同步工具,它同时控制访问特定资源或代码段的线程数量。它管理一组许可证; 线程在继续之前必须获得许可。 如果许可可用,则线程获取它并继续执行。 如果没有,则线程将.

Java 中使用 wait、notify、notifyAll快速指南

184 11K

首先,你永远不应该直接使用wait, notify, 或notifyAll(除非你有充分的理由)。如果您需要执行多线程操作,请使用并发库。使用 wait/notify/notifyAll 构建生产者/.