java教程技术文章
-
Java Stream.toList() 与 Collectors.toList() 都能把流收集成 List,但返回列表的可变性、null 边界和类型推断并不相同。本文用可运行示例说明如何按后续操作选择写法。462 收藏 -
ClassValue 适合把与 Class 绑定的元数据懒加载并缓存起来。本文用一段可运行示例拆开 get、类型值计算、remove 的关系,并说明它与普通 Map 缓存、类卸载之间的边界。124 收藏 -
Java Stream.takeWhile 在有序流中取的是满足条件的最长前缀;放进并行流后,顺序约束会带来额外协调成本,而 unordered() 会改变结果语义。293 收藏 -
文章 · java教程 | 4天前 | 并发 · Java教程 · CompletableFuture · 超时处理 · java 异步任务 completablefuture TimeoutException orTimeout
CompletableFuture.orTimeout 只会让阶段在超时后以 TimeoutException 结束,并不会自动中断已经运行的底层任务。本文用可运行示例拆解超时、异常分支、cancel 和线程中断的边界,给出可验证的停止方案。311 收藏 -
Java 26 的 StructuredTaskScope 仍是预览 API。本文用两个并发子任务演示如何配置 timeout、调用 join 获取结果,并解释超时后取消与 close 等待线程结束的边界。493 收藏 -
用一个可复现的锁竞争场景,说明 Java ReentrantLock.lockInterruptibly 的等待、中断、异常清理和 finally 释放顺序,避免把线程中断误写成强制解锁。422 收藏 -
Java DateTimeFormatter 的格式化结果可能随默认 Locale 改变。本文用固定模式、Locale.ROOT 和本地化样式对照,说明如何稳定生成接口、日志和用户界面的日期文本。252 收藏 -
Java 24 的 Gatherers.fold 适合没有合并器、且结果依赖输入顺序的聚合。本文用分段账单摘要拆解状态边界、空流结果与并行流验收,避免把 fold 当成可随意并行的 reduce。233 收藏 -
Java Pattern.asMatchPredicate 可以把完整字符串匹配封装成 Predicate,再交给 Stream.anyMatch 短路查找。本文用订单号校验场景对比 asMatchPredicate 与 asPredicate,说明 null、空流和正则边界。118 收藏 -
Java Flow.Publisher 的背压不是一个抽象口号:Subscriber 通过 Subscription.request 控制批次,数据库写入完成后再补请求,取消时沿链路停止。本文用最小示例讲清请求量、批处理和取消边界。279 收藏 -
Java 服务上传大文件时,不要把整文件一次性读进内存。本文用 AWS SDK for Java 2.x 的异步客户端拆解分片大小、并发度、失败重试和中止清理,给出一条可落地的选择路径。175 收藏 -
Java HttpClient 的 BodyHandlers.ofLines 返回的是流式 Stream,读取完毕或提前停止都要明确关闭。本文从响应接收、行消费到资源释放拆开调用链,给出 try-with-resources 写法和提前终止时的边界。 283 收藏 -
用 Java NIO AsynchronousFileChannel 写文件时,连续提交回调可能让任务堆积。本文用批量写入、单飞窗口和可复现吞吐基线,说明如何控制并发、等待完成并验证结果。451 收藏 -
Java HashMap 的桶并不是碰撞一多就立刻变成红黑树。本文结合 TREEIFY_THRESHOLD、MIN_TREEIFY_CAPACITY、resize 和 putVal 说明树化条件、扩容优先级与读取路径。443 收藏 -
ArrayDeque 明确禁止 null,不是实现遗漏,而是为了让 pollFirst 的 null 返回值稳定表示“队列为空”。本文从 addLast、pollFirst 和空值哨兵的关系出发,说明如何改造入队契约并验证边界。180 收藏