CountDownLatch countDownLatch=new CountDownLatch(classrooms.size());
- countDownLatch这个类使一个线程等待其他线程各自执行完毕后再执行。
- 是通过一个计数器来实现的,计数器的初始值是线程的数量。每当一个线程执行完毕后,计数器的值就-1,当计数器的值为0时,表示所有线程都执行完毕,然后在闭锁上等待的线程就可以恢复工作了。
CountDownLatch countDownLatch=new CountDownLatch(xx.size());
for (XX xx : xx) {
ThreadPoolUtils.getThreadPool().execute(() -> {
tableList.add(goodPojo);
countDownLatch.countDown();
});
}
try {
countDownLatch.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
CountDownLatch 循环中 初始化 数组或列表的大小countDownLatch.countDown() 表示计数器countDownLatch.await() 只有出现这个的时候 才会执行线程下面的逻辑
PS:下标越界异常是因为 ArrayList 是线程不安全的
建议使用 Vector 或者使用线程锁 或者 开启线程可见