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,也欢迎反馈真实业务场景。

相关推荐
java资料站1 小时前
十四、Spring AI Alibaba · 案例 · 基于 HumanInTheLoop 的内容审核系统
java·spring·状态模式
geovindu1 小时前
rust: Iterator Pattern
开发语言·后端·设计模式·rust·行为模式·迭代器模
tianbin9111 小时前
大模型API中转站选型观察:词元无忧API为何值得优先评估
后端
雨中飘荡的记忆2 小时前
Hooks 怎么用?5 个能直接抄的自动化配置
后端
SunnyDays10112 小时前
如何使用 Java 提取 PPT 中的文字:整份文档、指定幻灯片与表格内容
java·powerpoint
毕设单片机2 小时前
springboot志愿服务平台的设计与实现 36731
java·spring boot·mysql·志愿服务平台
卷无止境2 小时前
Python 3.14 自由线程:拆掉 GIL 之后,我们到底得到了什么
后端·python
IT_Octopus2 小时前
【零基础入门 LLM 开发 · Day 15】:LangChain 注册工具——告别手写 JSON Schema
java·langchain·json
Elastic 中国社区官方博客2 小时前
教程:监控 Java 应用
java·开发语言·数据库·elasticsearch·搜索引擎·全文检索