开发者社区> 问答> 正文

如何利用JVM的并发工具CountDownLatch进行单一并发场景的测试?

如何利用JVM的并发工具CountDownLatch进行单一并发场景的测试?

展开
收起
不吃核桃 2024-08-05 21:10:39 24 0
1 条回答
写回答
取消 提交回答
  • 在单一并发场景中,可以使用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实现了多个线程的同时启动和等待所有线程执行完成的功能,适用于测试单一并发场景下,一个共享资源且只能处理一次的情况。

    2024-08-06 08:10:36
    赞同 1 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
JVM的GC 立即下载
基于JVM的脚本语言开发、运用实践 立即下载
前端自动化测试 立即下载