如何利用JVM的并发工具CountDownLatch进行单一并发场景的测试?
在单一并发场景中,可以使用JVM的并发工具CountDownLatch来模拟多个线程同时执行某个任务。以下是一个使用CountDownLatch的示例代码片段:
java
public void invokeAllTask(int concurrency, Runnable task) {
final CountDownLatch startCountDownLatch = new CountDownLatch(1);
final CountDownLatch endCountDownLatch = new CountDownLatch(concurrency);
for (int i = 0; i < concurrency; i++) {
Thread t = new Thread(() -> {
try {
startCountDownLatch.await(); // 等待所有线程准备就绪
try {
task.run(); // 执行任务
} finally {
endCountDownLatch.countDown(); // 任务完成,减少计数器
}
} catch (Exception ex) {
log.error("异常", ex);
}
});
t.start();
}
startCountDownLatch.countDown(); // 允许所有线程开始执行
try {
endCountDownLatch.await(); // 等待所有线程执行完成
} catch (InterruptedException ex) {
log.error("线程异常中断", ex);
}
}
这段代码通过CountDownLatch实现了多个线程的同时启动和等待所有线程执行完成的功能,适用于测试单一并发场景下,一个共享资源且只能处理一次的情况。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。