并发编程指南

     

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

31 9K

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

Java中可变对象与不可变对象

43 5K

在 Java 中使用对象时,了解可变对象和不可变对象之间的区别至关重要。这些概念影响 Java 代码的行为和设计。在本教程中,我们将探讨可变对象和不可变对象的定义、示例、优点和注意事项。什么是不可变对.

Java中Quarkus使用虚拟线程

47 1 4K

Java 21 的引入带来了一项革命性的功能——虚拟线程。这些由Java 虚拟机(JVM)管理的轻量级线程有望重塑开发人员在 Java 应用程序中处理并发性的方式。并发应用程序开发长期以来一直充满挑战.

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

34 7K

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

jcstress:Java并发压力测试工具

61 1

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

C++ 11 中的内存模型

29 8K

内存模型是描述程序如何与内存交互的规范。在 C++ 11 中,创建了标准化内存模型,为并发、排序和多线程问题提供解决方案。该框架指定了 C++ 程序中如何访问和排列内存。在本文中,我们将讨论 C++ .

C++ 中的协程

56 7K

在本文中,我们将讨论协程、用途、实现、示例和输出。什么是协程?C++ 中的协程是一种控制结构,其中控制流不间断地从一个例程传输到另一个例程。C++20版本引入了C++协程功能。协程是一种可以阻止稍后恢.

Java中两种基础并行处理方式

50 7K

并行处理是一种计算技术,其中多个任务或进程同时执行,将它们分解为可以同时处理的更小的子任务。并行处理不是一次处理一项任务,而是可以同时执行多个任务,从而提高性能和效率。在并行处理系统中,复杂的任务被分.

Go中用Goroutine实现观察者模式

39 3K

观察者模式是事件驱动编程中的主要内容,其中对象(称为“主题”)维护其依赖者(观察者)的列表,并通知它们任何状态更改。在 Python 等语言中,信号为此类解耦组件提供了一种通信机制。但是我们如何利用 .

深入研究Go运行时的调度程序

36 10K

Go 对并发的内置支持是其最重要的功能之一,使其成为构建高性能和可扩展系统的流行选择。在本文中,我们将探讨 Golang 中的并发概念,包括其核心原语,例如goroutine和Channels,以及它.

Spring Boot中启用虚拟线程的四个场景和源码

139 5K

Spring Boot 3和Spring Framework 6正式支持Virtual Thread。本文总结了如何使用虚拟线程替换基于 Spring Boot 的项目中处理Spring Web MV.

Go中Goroutine简单教程

63 4K

Goroutine 是 Go 编程语言中的轻量级、独立执行的并发控制线程。Goroutines 是 Go 中并发和并行编程的基本构建块。它们允许您并发执行函数,从而可以轻松地以可读且可管理的方式编写并.

Java中的ConcurrentHashMap教程

56 11K

并发性是现代软件开发的一个重要方面,尤其是在多线程环境中。同时管理共享数据结构需要仔细考虑,以避免竞争条件并保持数据完整性。Java 并发编程武器库中的一项强大工具是 ConcurrentHashMa.

Java中的ArrayBlockingQueue教程

53 15K

ArrayBlockingQueue 是 Java 中一个强大的并发集合,它提供了阻塞队列的线程安全实现。这种数据结构在多线程需要以生产者-消费者模式进行通信和交换数据的场景中特别有用。在这篇博文中,.

Java中CompletableFuture全面教程

108 8K

Java 8 中 CompletableFuture 的引入标志着处理异步操作的重大飞跃。CompletableFuture 是一个强大而灵活的类,它有利于并发编程,使开发人员更容易编写高效且可扩展的.

Java 中的 CopyOnWriteArrayList

57 4K

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

递归算法与并发编程能同时实现吗?

58 2K

我一直在尝试在递归等求解器中实现并发。但是,我不相信我有正确的实施想法。有谁有关于有效实现递归并发的资源吗?网友讨论:1、对于这类问题,我认为递归就像树形结构:分支。对于数独这棵相当高的树来说,我不认.

Java中AtomicReference专家指南

170 27K

Java中的AtomicReference是一个有趣的功能,它增强了应用程序的线程安全性。本指南深入探讨了 AtomicReference 的复杂性,解释了它的功能、优点以及在 Java 开发中的实际.

如何高效批量读取Go Channel数据

72 8K

近年来,Go语言因其高效的并发模型而受到广泛关注。Goroutines 和 Channels 是 Go 中构建并发程序的基础。通道可用于在 goroutine 之间安全地传递数据和信号。很多场景下,我.

什么是 Python 全局解释器锁 (GIL)

68 5K

Python 全局解释器锁(GIL)是一种进程锁,GIL 确保单个进程中一次只有一个线程执行 Python 字节码。 在Python中,单线程进程和多线程进程的性能是相同的,这是因为Python中的G.

Go中的t.Parallel()使用教程

114 3K

在Go编程语言(Golang)的上下文中,该t.Parallel()函数经常用于测试。在 Go 中编写测试时,该testing包提供了一种T类型,该类型具有用于管理和报告测试状态的方法。该t.Para.

Go中的Context是什么?

193 1 2K

在 Go 编程语言(通常称为 Golang)中,术语 "上下文 "指的是上下文包及其定义的上下文类型。上下文包用于跨 API 边界和进程间传输截止日期、取消信号和其他请求范围值。上下文包的主要目的是管.

Java 21 中的虚拟线程

101 3K

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

jox:Java 中的快速且可扩展的通道

64 4K

Java 中的快速且可扩展的通道。设计用于与Project Loom一起使用。受到“Kotlin 协程中的快速且可扩展的通道”论文和Kotlin 实现的启发。jox库在 Java 中实现了一种高效的C.

Java 9 不可变集合

60 6K

在软件开发领域,不变性的概念因其在创建更可预测和更健壮的代码方面的作用而受到广泛关注。不可变对象是指其状态在创建后就无法更改的对象,具有线程安全、简化调试和提高代码可维护性等优点。Java 是使用最广.

Java中函数式职责链的并发处理

176 2K

Java 中有一个函数集合,每个函数都扩展了 java.util.function.Function<T,R>,如何将它们应用于字符串并返回字符串?如果您有一组扩展了 java.util.functi.

Python中并行搜索图的几种算法代码

73 17K

一个使用图进行并行编程任务的简单示例。给定一个有 N 个节点、M 条边和一个源节点 S 的有向加权图,使用并行编程找出从源节点 S 到图中所有其他节点的最短距离。要使用并行编程并行计算加权有向图中的最.

Python 3.12将开启并发和并行编程模型

115 6K

PEP 684 引入了Per-Interpreter的 GIL,因此现在可以为每个解释器创建具有唯一 GIL 的子解释器。这样,Python 程序就能充分利用多个 CPU 内核。目前只能通过 C-AP.

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

68

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

并发ConcurrentSkipListSet与线程安全Collections.SynchronizedSet()区别

86 5K

ConcurrentSkipListSet是SortedSet的并发版本,当然TreeSet也可以通过Collections.SynchronizedSet(new TreeSet())实现,这两者有.