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

相关推荐
吴文周8 小时前
告别重复劳动:一套插件让 AI 替你写代码、修Bug、做测试、上生产
前端·后端·ai编程
Cyeam8 小时前
Roadbook CSV:一行 CSV 秒变高德地图路书
后端·开源·aigc
yaoxin5211239 小时前
390. Java IO API - WatchDir 示例
java·前端·python
懒狗小前端9 小时前
做了一个 codex 的中文文档网站,做的不好可以随便喷
前端·后端
头发够用的程序员9 小时前
从滑动窗口到矩阵运算:img2col算法基本原理
人工智能·算法·yolo·性能优化·矩阵·边缘计算·jetson
Halo_tjn10 小时前
Java 基于字符串相关知识点
java·开发语言·算法
梦想的颜色10 小时前
java 利用redis来限制用户频繁点击
java·开发语言
Eric_见嘉11 小时前
在职前端 Agent 配置分享
前端·后端·agent
Ares-Wang11 小时前
Flask》》 Flask-OpenID 认证、 OpenID Connect (OIDC)
后端·python·flask
掘金码甲哥11 小时前
这篇优雅安装k8s集群的姿势,请务必投喂给AI智能体, 包装包活的那种!
后端