ThreadForge v1.1.0 发布:让 Java 并发更接近 Go 的开发体验

正好春节放假,自驾去了陕西、河南、安徽,一路上走走停停。

白天基本在路上,晚上在酒店或者服务区休息时,抽一些时间继续打磨 ThreadForge。

一点点补了个 v1.1.0 出来。

仍然保持 ThreadForge 的目标:
让 Java 能写出更简单、更可推理、更可观测的并发代码。

这次版本,重点补齐了并发开发里几个还算常见的能力。

v1.1.0 核心更新

  1. Retry Policy(失败重试)

    支持 scope 级默认重试,也支持任务级覆盖,不再到处手写 while/try-catch 重试模板。

  2. Per-Task Timeout(任务级超时)

    除了 scope 的 deadline 外,任务本身可设置独立超时,慢任务可快速失败,不拖全局节奏。

  3. Context Propagation(上下文传播)

    支持平台线程与虚拟线程的上下文自动捕获与恢复,覆盖提交任务、调度任务和嵌套提交场景。

  4. OpenTelemetry 集成
    withOpenTelemetry(...) 一行开启任务生命周期追踪,便于链路排障与性能分析。

  5. Task Priority(任务优先级)

    引入优先级调度(高/中/低),关键任务可以更快执行。

示例代码

java 复制代码
import io.threadforge.*;

import java.time.Duration;

public class Demo {
    public static void main(String[] args) {
        Context.put("traceId", "req-20260219");

        try (ThreadScope scope = ThreadScope.open()
            .withScheduler(Scheduler.priority(8))
            .withRetryPolicy(RetryPolicy.fixedDelay(3, Duration.ofMillis(100)))
            .withOpenTelemetry()
            .withFailurePolicy(FailurePolicy.SUPERVISOR)
            .withDeadline(Duration.ofSeconds(3))) {

            Task<String> critical = scope.submit(
                "critical-task",
                () -> remoteCall("A"),
                TaskPriority.HIGH,
                RetryPolicy.attempts(2),
                Duration.ofMillis(500)
            );

            Task<String> normal = scope.submit(
                "normal-task",
                () -> remoteCall("B"),
                TaskPriority.NORMAL,
                Duration.ofSeconds(1)
            );

            Outcome outcome = scope.await(critical, normal);
            System.out.println(outcome);
        }
    }

    private static String remoteCall(String name) {
        return "ok-" + name + "-" + Context.get("traceId");
    }
}

这段代码里同时覆盖了:

重试、任务级超时、上下文传播、优先级调度、可观测追踪。

能明显看出来,这次更新,把额外的几个核心痛点做了系统性的收敛:

  1. 比方说重试、超时、优先级等逻辑,不必再散落在业务里。
  2. 让开发从关注线程调度细节,回到关注任务目标上。
  3. 让任务的生命周期天然可接入 OTel,降低排障成本。

升级方式

Maven:

xml 复制代码
<dependency>
    <groupId>pub.lighting</groupId>
    <artifactId>threadforge-core</artifactId>
    <version>1.1.0</version>
</dependency>

Gradle:

gradle 复制代码
implementation("pub.lighting:threadforge-core:1.1.0")

更新日志与仓库

  1. 仓库:github.com/wuuJiawei/T...
  2. 更新日志:github.com/wuuJiawei/T...
  3. Maven Central:pub.lighting:threadforge-core:1.1.0

如果你也在做 Java 并发治理,并希望降低团队心智负担,欢迎试用 v1.1.0,也欢迎反馈真实业务场景。

相关推荐
tedcloud12311 分钟前
OpenLogi 怎么搭建?用 Rust 打造一个轻量的 Logitech 外设管理工具
linux·运维·服务器·开发语言·后端·rust·开源
霸道流氓气质23 分钟前
Spring AI 技术细节:VectorStore 多库统一抽象
java·人工智能·spring
今天AI了吗24 分钟前
Codex 配置自定义 AI API 完整指南:从零到一接入你的专属模型
java·人工智能·python·数据分析·embedding
学长毕业设计44 分钟前
基于SpringBoot的健康食谱管理系统的设计与实现(源码+文档+讲解视频)
java·spring boot·后端
珍珠先生1 小时前
P10 · 缺 MySQL 驱动 jar:ClassNotFoundException: com.mysql.cj.jdbc.Driver
java
pnoker1 小时前
从工业软件到 AI 智能体:工业 AIoT 技术路线的系统梳理
java·人工智能·物联网·microsoft·开源·工业互联网
专注仿真1 小时前
Vapor框架构建及Swift for TensorFlow图像分析
java·其他
逃逸线LOF1 小时前
Spring的AOP简介
java·后端·spring
砚底藏山河1 小时前
【量化纯GET实战 #21】用 pandas 做分析:把接口数据变成 DataFrame
java·python·金融·maven·pandas
Zzzzmo_2 小时前
Spring MVC
java·spring·mvc·cookie/session