Dojo
话题
新佳
订阅
极道
元认知
元逻辑
元设计
元编程
元语言
同步锁竞争教程
Java中CountDownLatch与Semaphore比较
在 Java 多线程中,线程之间的有效协调对于确保正确同步和防止数据损坏至关重要。两种常用的线程协调机制是CountDownLatch和Semaphore。在本教程中,我们将探讨CountDownLatch和Semaphore之间的差异,并讨论何时使用它们。
Java24解决了虚拟线程同步使用问题
在synchronized方法 + 虚拟线程 情况下会造成固定陷阱(Java虚拟线程不能使用同步synchronized锁!),为避免这种陷阱,JEP 491
Java中堆转储、线程转储和核心转储比较
转储是指从存储介质检索并保存以供后续分析的信息。Java虚拟机(JVM)在Java内存管理中起着至关重要的作用,当出现错误时,可以从JVM中获取转储文件以方便错误诊断。 在Java中,堆转储(Heap Dump)、线程转储(Thread Dump)和核心转
Java中原子操作的比较和交换 (CAS)
在本文中,我们将深入研究 Java CAS 的机制,揭开它的神秘面纱并了解它如何在实现非阻塞方法方面发挥关键作用。 什么是比较和交换 (CAS) 想象一下,你和朋友各有一篮子苹果,你们都想交换一些苹果。 <
Threads Collider:一个Java多线程测试工具
Threads Collider尝试在“完全相同”的时刻对多个线程执行所需的操作,以增加出现由竞争条件或死锁引起的问题的机会。 code@RepeatedTest(10)void Thread_safe_adding_to_list
RedPulsar:基于Redis的分布式锁
为 Jedis 和 Lettuce Redis 客户端提供解决方案。支持Java11+ RedPulsar 为云计算或不同类型的分布式系统提供带有 Redis 和其他实用程序的分布式锁。它是用 Kotlin 编写的简约、轻量级且易于使用的库,目前可
Java中CountDownLatch教程
在本文中,我们将了解如何使用 Java CountDownLatch 编写考虑并发性的测试用例。 Java CountDownLatch自版本 1.5 起就可用,它是java.util.concurrent包含许多其他与线程相关的实用程序的包的一部分。</
使用 WebClient 执行同步请求
在本教程中,我们演示如何使用WebClient管理同步通信,WebClient 是一种专为反应式编程设计但能够进行阻塞调用的工具。 随着反应式编程变得越来越普及,我们将研究此类阻塞请求仍然适当且必要的场景。
Lombok @Locked指南
在本文中,我们学习了如何使用Lombok的@Locked注解。 Lombok 引入了该注释以更好地支持虚拟线程。它代表了ReentrantLock对象的替代。我们看到如何使用@Lock.Read和@Lock.Write注释来指定读写锁,而不是使用通
Go中用缓冲通道作为信号量限制goroutine
当我们需要管理 有多少goroutine可以同时访问资源,使用信号量是一种可靠的方法。 可以使用缓冲通道创建一个信号量,其中通道的大小决定了可以同时运行多少个goroutine: 一个goroutine发送一个值到通道中,占用一个槽。
Rust中不要使用Arc《Mutex》创建HashMap
这篇文章详细解释了为什么在 Rust 中使用 Arc>> 并不是一个理想的选择,以及提供了一些更好的替代方案。 粗粒度锁定导致的争用问题使用 Arc
阻塞代码本质是抽象泄漏
这篇文章讨论了在编程中使用异步代码(async)与阻塞代码(blocking)的对比,特别是在Rust编程语言的上下文中。 作者认为,尽管异步代码可能难以理解,但它提供了一种优雅且优于其他选择的编程模型。 文章反驳了将异步代码视为“泄漏抽象”的观点,即异步代码的存在迫
Rust高可靠:互斥锁须在同一线程内锁住和释放
如果你是一名码农,或许曾经历过这样的困境:项目初期进展神速,代码写得飞起,可随着功能越来越多、代码量越来越大,你突然发现自己再也不敢轻易改动了——生怕一动就崩。更可怕的是,有些bug只在生产环境出现,本地永远复现不了。 最近,一位名叫Lubeno的
Golang 同步互斥:正常模式和饥饿模式
在 Go 中,互斥(或MUT ual EX排斥)基本上是一种确保一次只有一个 goroutine 干扰共享资源的方法。此资源可以是一段代码、一个整数、一个映射、一个结构、一个通道或几乎任何东西。 为什么我们需要 sync.Mutex
并发编程:五个哲学家抢筷子竟把Go程序搞到死锁
本文通过Go语言实现“哲学家吃饭问题”,深入剖析并发编程中的死锁、饥饿、数据竞争与内存模型等核心难题,揭示高并发系统设计的复杂性与精妙之处,展现Go语言在并发处理上的优势与挑战。 哲学家吃饭问题Dining Philosophers
使用 JPA 在 PostgreSQL 中持久保存 UUID
在使用 PostgreSQL 构建强大的 Java应用程序时,处理唯一标识符是一项基本要求。UUID(通用唯一标识符)提供了一种绝佳的替代方案,而不是依赖自动递增的数字 ID ,尤其是在分布式系统中。 随着时间的推移, 在 Java 应用程序中生成 UUI
Thread.sleep(0) 免费?别逗了,它比你想象中更“贵”
Java有那么一个看似无害的小方法:Thread.sleep(0)。它长得人畜无害,看起来就像是在说:“嘿,我啥也不干,就打个招呼,不耽误事儿。”于是无数程序员心安理得地把它当作“条件性休眠”的万能胶水,写进循环里,嵌在重试逻辑中,甚至当成“让出 CPU”的优雅姿势。
Futurelock死锁陷阱:异步Rust中隐藏最深的并发幽灵,99%开发者都踩过坑!
本文深入剖析异步Rust中一种名为“Futurelock”的新型死锁现象,揭示其成因、典型场景、调试难点及规避策略,为高并发系统开发者提供关键避坑指南。作者背景介绍 本文作者大卫·帕切科(David Pacheco)是O
下页
关闭