博主头像
Hzqaq的开发日记

全栈开发学习中

分类 java 下的文章

java

Jakarta Bean验证

验证用户输入以维护数据完整性是应用程序逻辑的重要组成部分。即使是最简单的应用程序,数据验证也是必不可少的。 Jakarta Bean Validation 模型通过对 JavaBeans 组件(例如托管 bean)的字段、方法或类进行注解形式的约束来支持。

java

Guava限流神器:RateLimiter使用指南

1. 引言 可能有些小伙伴听到“限流”这个词就觉得头大,感觉像是一个既复杂又枯燥的话题。别急,今天就要用轻松易懂的方式,带咱们一探RateLimiter的究竟。 想象一下,当你去超市排队结账时,如果收银台开得越多,排队的人就会越少,速度也就越快。但如果超市为了节省成本,只开了一两个收银台,那排队的速度就会大大降低,甚至造成拥堵。在软件世界里,特别是在处理网络请求或资源访问时,也存在类似的问题。这时候,RateLimiter就像是那个调节收银台开放数量的智能系统,它能帮助我们控制资源的访问速率,防止过载。

java

主线程如何得知线程池中多个并行任务的完成并收集它们的结果?

主线程等待多个并行任务完成并收集结果,常见有三种方式: **1) Future 模式** 提交任务时保存 Future 列表,主线程遍历调用 future.get() 阻塞获取结果,可以设置超时时间。缺点是串行等待,如果第一个任务慢,后面的任务结果拿不到。 **2) CompletableFuture** 用 CompletableFuture.allOf(futures).join() 等待所有任务完成,通过 thenApply 收集结果。支持异步回调和异常处理,单个任务失败不影响其他任务。这是目前最推荐的方式。 **3) CountDownLatch 协作** 初始化时设定计数值等于任务数,每个任务完成时调用 countDown(),主线程通过 latch.await() 阻塞等待计数归零。适合需要精确控制执行流程的场景。