首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么WebDriverManager在使用线程池和CountDownLatch时不同步?

为什么WebDriverManager在使用线程池和CountDownLatch时不同步?
EN

Stack Overflow用户
提问于 2022-11-20 14:13:31
回答 1查看 14关注 0票数 0

我正在尝试使用MultiThreaded运行一个Selenium测试(参考是-> https://www.programcreek.com/java-api-examples/?api=io.github.bonigarcia.wdm.WebDriverManager )

代码语言:javascript
复制
@Test 
public void test() throws InterruptedException {
    private int NUM_DATA =2;
    private int NUM_LATCH=2;
    private int POOL_SIZE=2;

    CountDownLatch latch = new CountDownLatch(NUM_LATCH);
    ExecutorService executorService = newFixedThreadPool(POOL_SIZE);
   
    for (int i = 0; i < NUM_DATA; i++) {
        executorService.submit(() -> {
            try {
                WebDriverManager.chromedriver().setup();
                ChromeOptions options = new ChromeOptions();
                options.addArguments("--headless");
                WebDriver driver = new ChromeDriver(options);
                driver.get(
                        "https://bonigarcia.github.io/selenium-jupiter/");
                String title = driver.getTitle();
                System.out.println(title);
                driver.quit();
            } finally {
                latch.countDown();
            }
        });
    }

    latch.await();
    executorService.shutdown(); }

在我的情况下

TRHEAD

  • NUM_LATCH = NUM_DATA =6,POOL_SIZE =2 =>工作精细

  1. NUM_LATCH = POOL_SIZE = NUM_DATA == >工作精细
  2. NUM_LATCH=2= POOL_SIZE,NUM_DATA =6=>所有实例都关闭

通过工作良好的方式,这里意味着打开所有浏览器实例并执行,然后关闭所有浏览器。

我的问题是,如果我有1000套NUM_DATA,而POOL_SIZE一次是10。是否必须将NUM_LATCH始终设置为NUM_DATA?

根据"https://www.baeldung.com/java-countdown-latch“中的文章

“如果我们正在进行一些并行处理,我们可以为计数器实例化CountDownLatch,其值与我们想要跨越的多个线程相同”

但在这里,我们设置的不是num_Latch= POOL_SIZE,而是num_Latch= Num_Data_Set的数量。这是使用CountDownLatch的正确方式吗?

EN

回答 1

Stack Overflow用户

发布于 2022-11-20 16:41:46

,我必须设置NUM_LATCH总是等于NUM_DATA吗?

否则又有什么意义呢?门闩的用途是什么?NUM_DATA是提交给执行器的任务数。我假设您希望主线程中的latch.await()调用在所有这些任务完成后返回。是那么回事吗?如果这是您想要的,那么锁锁的初始值最好等于NUM_DATA。

我认为您根本不应该声明NUM_LATCH,只需编写new CountDownLatch(NUM_DATA)。这向正在阅读您的代码的其他任何人表明,您需要锁锁的初始值等于任务的数量。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74508842

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档