常用的两种方式:
ExecutorService taskExecutor = Executors.newFixedThreadPool(4);
while(...) {
taskExecutor.execute(new MyTask());
}
taskExecutor.shutdown();
try {
taskExecutor.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS);
} catch (InterruptedException e) {
...
}
CountDownLatch latch = new CountDownLatch(totalNumberOfTasks);
ExecutorService taskExecutor = Executors.newFixedThreadPool(4);
while(...) {
taskExecutor.execute(new MyTask());
}
try {
latch.await();
} catch (InterruptedException E) {
// handle
}
然后在线程方法中加入
try {
...
} catch (Exception e) {
e.printStackTrace();
}finally {
countDownLatch.countDown();
}
转载自:https://blog.csdn.net/q258523454/article/details/81978855
本文介绍了两种在Java中实现并发任务处理的方法。第一种使用ExecutorService和newFixedThreadPool进行固定线程池的任务调度,确保线程数量固定并能有效处理大量任务。第二种方法结合了CountDownLatch与ExecutorService,适用于需要等待所有子任务完成的场景,通过CountDownLatch的countDown方法来通知主线程所有任务已完成。

419

被折叠的 条评论
为什么被折叠?



