GloryJie 最近的时间轴更新
GloryJie
ONLINE

GloryJie

V2EX 第 411149 号会员,加入于 2019-05-10 19:02:42 +08:00
今日活跃度排名 8107
GloryJie 最近回复了
62 天前
回复了 Alextrasza 创建的主题 Java 求助: Java 多线程如何终止其它线程
做过类似的,是多个任务有一个满足就提前返回,可以参考下

public static <T> T supplyBatchPredicateTask(List<Callable<T>> taskList, Predicate<T> predicate, long timeout, Executor executor) {
CountDownLatch predicateCountDown = new CountDownLatch(1);
AtomicReference<T> successReference = new AtomicReference<>();
AtomicReference<T> failReference = new AtomicReference<>();

List<CompletableFuture<T>> futureList = new ArrayList<>(taskList.size());

for (Callable<T> task : taskList) {
CompletableFuture<T> future = CompletableFuture.supplyAsync(() -> {
try {
T result = task.call();
if (predicate.test(result)) {
successReference.set(result);
predicateCountDown.countDown();
return result;
}
failReference.set(result);
} catch (Exception exception) {
log.warn("act=supplyBatchPredicateTask 任务执行失败", exception);
}
return null;
}, executor);
futureList.add(future);
}

//全失败(不仅仅是任务失败,还有是断言失败)的情況下进行唤醒
CompletableFuture.allOf(futureList.toArray(new CompletableFuture[] {})).whenComplete((result, throwable) -> {
predicateCountDown.countDown();
});

try {
predicateCountDown.await(timeout, TimeUnit.MILLISECONDS);
} catch (Exception e) {
// ignore
log.warn("act=supplyBatchPredicateTask 等待任务执行结果中断", e);
}
return successReference.get() != null ? successReference.get() : failReference.get();
}
mac 上有个软件 MacFamilyTree 听炫酷的,可以参考下
300 天前
回复了 aoguai 创建的主题 分享创造 我也来送波红包封面
已领,感谢大佬
323 天前
回复了 baolinliu442k 创建的主题 Java 实际项目中如何使用线程池
在 BFF 层聚合数据的时候用的多,一般会同时调好几个接口。这边使用上线程池一般都托管给 Spring 。
最近在改造成基于 Dag 来编排任务执行了,不过基础还是让线程池执行
2022-12-15 15:13:33 +08:00
回复了 yusheng88 创建的主题 程序员 线程安全问题,求大佬解惑
在执行 setResponse 之前打印时间 A ,take == null 的时候时间 B 。得出 B < A 的,还没执行前,线程就被唤醒唤醒了。感觉是楼上说的 spuriously 的原因
2021-11-06 10:37:46 +08:00
回复了 monster1priest 创建的主题 Java Spring controller 的两个问题
不建议自己使用 request 对象来解析参数,还有个理由是为了保持方法的一个简单(和 request 对象解耦),和普通方法没什么区别。写单元测试也简单
2021-03-31 17:02:00 +08:00
回复了 RickyC 创建的主题 支付宝 PC 版优酷同一个二维码,同时支持支付宝和微信,怎么做到的
根据 UA 来拉起对应的手机支付,并不是 PC 的支付接口
2021-02-20 22:29:40 +08:00
回复了 overthemoon 创建的主题 职场话题 今年裸辞的多吗
换城市的话是不是裸辞好些? 19 年毕业,现在想从杭州回广东了
我记得之前找内退投过,也说是一本不要
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5924 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 13ms · UTC 02:06 · PVG 10:06 · LAX 18:06 · JFK 21:06
Developed with CodeLauncher
♥ Do have faith in what you're doing.