多线程设计

  

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

23-06-03 68 4k

Java 虚拟线程是 JDK 19 提供的一项新功能。它有可能在减少内存消耗的基础上提高应用程序的 可用性 、吞吐量和代码质量。 在本文中,让我们了解从 Java 平台线程切换到虚拟线程时应避... 详细

异步 Rust 如何工作?

23-05-05 679 1 6k
Rust 有一个新兴的 异步 系统。如果你的应用程序 IO 很重,你应该简单地“使用异步”,一切都会高效地工作。 您可以使用async fn,.await,让它在后台处理,而 CPU 会做一些... 详细

Rust 类型系统可以防止死锁吗?

23-04-28 139 4k

在您最意想不到的时候,死锁潜伏在每个角落。我们可以使用 Rust 类型系统在编译时避免它们吗?也就是说,在编译时能证明没有死锁吗? 假设我们有两个互斥体(或互斥体,如果你喜欢的话)M1 和 M2。... 详细

使用JDK飞行记录器和一些SQL查找Java线程泄漏 - Gunnar Morling

23-03-05 260 1k

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

用虚拟线程编写Http服务器 - piot

22-12-28 692 3k

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

Java虚拟线程:异步编程之死

22-11-23 1425 3 13k
最近,虚拟线程的第二个预览版作为 JEP 436 的一部分发布。第一个预览版中引入的一些更改已经完成,我们离获得对虚拟线程的完全访问权又近了一步。在本文中,我们将尝试为您提供有关为什么 JVM 生态... 详细

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

22-11-16 1107 6k

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

Rust所有权与借用图示概念

22-10-09 1360 1 4k
Rust 中的所有权是什么? Rust没有垃圾收集器,您需要显式分配和释放内存空间。当涉及大型代码库时,这很快就会变得乏味和具有挑战性。 传统上,有两种管理内存的基本方法: 第一个是垃圾收集器... 详细

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

22-09-23 676 4k

单例模式在实际工作或面试中出现的频率更高,double-checked lock是单例常见实现: public class SimpleSingleton4 {     pr... 详细

Java使用默认线程池的陷阱问题

22-09-23 648 1k

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

Java并发编程Bug:ThreadLocal已用完但未清除

22-09-23 617 2k

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

Java 18中启动Project Loom数百万线程

22-06-26 2256 1 1k

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

优步爆Go语言容易发生的数据并发争夺问题

22-06-11 1475 1 4k

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

JVM c1、c2 编译线程——CPU 消耗高?

22-06-07 1090 3k

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

Java可扩展的读写锁 - puzpuzpuz

22-06-07 556

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