多线程设计
使用Java虚拟线程时要避免的陷阱

Java 虚拟线程是 JDK 19 提供的一项新功能。它有可能在减少内存消耗的基础上提高应用程序的 可用性 、吞吐量和代码质量。 在本文中,让我们了解从 Java 平台线程切换到虚拟线程时应避... 详细
异步 Rust 如何工作?
Rust 类型系统可以防止死锁吗?

在您最意想不到的时候,死锁潜伏在每个角落。我们可以使用 Rust 类型系统在编译时避免它们吗?也就是说,在编译时能证明没有死锁吗? 假设我们有两个互斥体(或互斥体,如果你喜欢的话)M1 和 M2。... 详细
使用JDK飞行记录器和一些SQL查找Java线程泄漏 - Gunnar Morling

配备 JDK Flight Recorder、JDK Mission Control 和 JFR Analytics,识别和修复 Java 应用程序中的线程泄漏正在成为一项相对简单的任务。 分析可... 详细
用虚拟线程编写Http服务器 - piot

在本文中,您将学习如何使用 Java 创建 HTTP 服务器以及如何使用虚拟线程来处理传入的请求。我们将此解决方案与使用标准线程池的 HTTP 服务器进行比较。我们的测试将在大约 200 个并发请求... 详细
Java虚拟线程:异步编程之死

Java线程stop等方法被弃用(Java SE 19 & JDK 19)

Java 中Thread 一些方法被弃用:stop, suspend, resume 为什么被Thread.stop弃用? 因为它本质上是不安全的。停止一个线程会导致它解锁它所锁定的所有监视... 详细
Rust所有权与借用图示概念

Java并发编程中双重检查锁漏洞

单例模式在实际工作或面试中出现的频率更高,double-checked lock是单例常见实现: public class SimpleSingleton4 { pr... 详细
Java使用默认线程池的陷阱问题

我们都知道JDK1.5之后提供了ThreadPoolExecutor类,可以用来自定义线程池。 线程池有很多好处,比如: 减少资源消耗,避免频繁创建和销毁线程,可以直接复用已有线程。 提供速... 详细
Java并发编程Bug:ThreadLocal已用完但未清除

在Java中,有许多技术可以确保线程安全。你可以使用synchronized和Lock等关键字来锁定代码块。 但它们有一个共同的特点,那就是锁定会对代码的性能产生一定的损失。 其实,JDK中还提供... 详细
Java 18中启动Project Loom数百万线程

在 微服务 时代的现代,我们与太多的服务进行通信以完成特定的工作。在这种情况下,线程大部分时间都处于阻塞状态。虽然现代操作系统有时可以处理数百万个打开的套接字,但我们无法打开许多通信通道,因为我... 详细
优步爆Go语言容易发生的数据并发争夺问题

Uber已经采用Golang(简称Go)作为开发 微服务 的主要编程语言。我们的Go monorepo由大约5000万行代码组成(还在增长),包含大约2100个独特的Go服务(还在增长)。 G... 详细
JVM c1、c2 编译线程——CPU 消耗高?

c1, c2编译器线程是由Java虚拟机创建的,以优化你的应用程序的性能。偶尔,这些线程会倾向于消耗高CPU。在这篇文章中,让我们了解更多关于c1、c2编译器线程的情况,以及如何解决它们的高CPU消... 详细
Java可扩展的读写锁 - puzpuzpuz

锁或互斥体(互斥)是最基本的并发原语之一。很难找到一个无法解释互斥锁的开发人员,至少在基本层面上是这样。然而,互斥锁远不止这些。他们可能是: 操作系统级(想想,一个 pthread 互斥锁)或... 详细