尝试一次仅运行5个硒web驱动器的线程,重复直到运行200个线程



我正在尝试在给定时间运行5个线程,等待这些线程完成,然后再打开5个,重复直到运行〜200个线程。我的代码可以打开5个线程,然后等待它们在继续之前完成,但是当我尝试将其放在循环中并将目标设置为10个线程时之后(,同时打开所有10个线程。我担心,如果将目标提高到200个线程,它将超载计算机。

基于此处提出的另一个问题的答案(无法找到我的生命(,我从使用线程到执行人员服务,该问题用于了解何时完成5个线程。我不是很有经验,所以除了/do-while/wher lile/wher loop(我都尝试过(我不知道我可以尝试什么循环。

            LISTSPERSESSION = 10;
            ExecutorService es = Executors.newCachedThreadPool();
            int listIndex = 0;
            do {
                boolean finished = false;
                //Goes until 5 lists are searched OR the number of lists per session is hit
                for(int i=0; i < 5 || listIndex < LISTSPERSESSION; i++) {
                    listIndex++;
                    int index = i;
                    es.execute(() -> v.searchDatabase(index));
                }
                es.shutdown();
                try {
                    finished = es.awaitTermination(10, TimeUnit.MINUTES);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                if(finished == true) {
                    if(listIndex == LISTSPERSESSION) {
                        break;
                    } else {
                        continue;
                    }
                }
            } while(false);

它一次打开所有10个线程,而不是一次打开5个线程。

此规则i < 5 || listIndex < LISTSPERSESSION将对true进行评估,只要ListIndex&lt;10。

切换到或:i < 5 && listIndex < LISTSPERSESSION

对于环条件,应在牙套中,并添加&amp;&amp;而不是||操作员

(i&lt; 5&amp;&amp; listIndex&lt; listSpersession(

相关内容

  • 没有找到相关文章

最新更新