lolico 最近的时间轴更新
lolico

lolico

V2EX 第 483150 号会员,加入于 2020-04-12 13:36:57 +08:00
lolico 最近回复了
@lolico 加密邮箱

YsLaSCSH9E6NL2K8eBX5P/9OQkG/FOdS2NLAnWItqu01yb67ZGEAYT2CIYIMDIpq3ccdmjbdR9F9UpQ7EaIWkMwd75aFKyGLQPijYKt2PQr9z1fIYC2w88nOPdYCdSqvcBAS8zXjZUXIT8udk8fNKCR1ZSraCtihGhcbYX3fv0Zp8aL1QYsRMq60K0VWP5IZBs7JFr7fTKDHcE2kfMIPocnmpvuGiScwvApjBb0GCR3Q0i6wlloqf9+uBTHsKzVP4dEbknycKe/OMnxZ66mrnLUK4ke9GkZjK1Hjf6/6jUK8NVO960HwC13QTBHRvowTK+2KdK256d1JMb/E1YqGlg==
顶一下,之前一直用的 paste ,后面早鸟票上车,挺好用的
YzNiMmFAcXEuY29t
93 天前
回复了 Alextrasza 创建的主题 Java 求助: Java 多线程如何终止其它线程
@lolico 这里用线程池也是可以的,主线程 latch.await()后调线程池 shutdownNow 也可以中断线程池内所有线程
93 天前
回复了 Alextrasza 创建的主题 Java 求助: Java 多线程如何终止其它线程
public static void main(String[] args) throws InterruptedException {
List<Thread> threads = new ArrayList<>();
final int untilSuccessCount = 2;
final int threadCount = 10;
AtomicInteger counter = new AtomicInteger(0);
CountDownLatch latch = new CountDownLatch(1);
for (int i = 0; i < threadCount; i++) {
int finalI = i;
Thread thread = new Thread(() -> {
// 模拟耗时任务
Random random = new Random();
// 直接使用线程的 interrupt 中断标记
while (!Thread.interrupted()) {
try {
Thread.sleep((long) finalI * 1000);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
return;
}
if (random.nextBoolean()) {
if (counter.incrementAndGet() == untilSuccessCount) {
latch.countDown();
}
return;
}
}
});
thread.start();
threads.add(thread);
}
// 可以启动一个线程,等待所有 thread 完成后 latch.countDown ,防止一直等待。
// 或者加一个 allDoneLatch 也可以实现
latch.await();
threads.forEach(Thread::interrupt); // 中断其他线程
System.out.println(counter.get());
}
支持一下
祝老板大卖!
2023-11-16 10:47:05 +08:00
回复了 lijianmin321 创建的主题 分享创造 V 站老哥太热情了, Airy 永久会员加送 9000,凑到 1 万
支持一下
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2546 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 11ms · UTC 04:21 · PVG 12:21 · LAX 20:21 · JFK 23:21
Developed with CodeLauncher
♥ Do have faith in what you're doing.