我試圖讓 5 個 selenium webdriver 線程在給定時間運行,等待這些線程完成,然后再打開 5 個,重復直到運行 ~200 個線程。我的代碼可以打開 5 個線程并等待它們完成后再繼續,但是當我嘗試將其放入循環并將目標設置為 10 個線程時(應該是運行并完成的 5 個線程,然后是運行并完成的 5 個線程之后),它同時打開所有 10 個線程。我擔心如果我將目標提高到 200 個線程,它會使計算機超載?;趯Υ颂幪岢龅牧硪粋€問題的回答(我一輩子都找不到),我從使用 Thread 切換到 ExecutorService,它用于了解 5 個線程何時完成。我不是很有經驗,所以除了 for/do-while/while 循環(我都試過)之外,我不知道我還能嘗試什么其他循環。 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 個。
添加回答
舉報
0/150
提交
取消