diff options
Diffstat (limited to 'UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/utils/ParallelTasks.java')
-rw-r--r-- | UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/utils/ParallelTasks.java | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/utils/ParallelTasks.java b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/utils/ParallelTasks.java new file mode 100644 index 0000000..45fdf96 --- /dev/null +++ b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/utils/ParallelTasks.java @@ -0,0 +1,87 @@ +/* +* ============LICENSE_START======================================================= +* ONAP : DCAE +* ================================================================================ +* Copyright 2018 TechMahindra +*================================================================================= +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +* ============LICENSE_END========================================================= +*/ +package org.onap.universalvesadapter.utils; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +/** + * + * Utility class to execute parallel tasks + * + * @author kmalbari + * + */ +public class ParallelTasks +{ + private final Collection<Runnable> tasks = new ArrayList<Runnable>(); + + public ParallelTasks() + { + } + + /** + * + * Add task to be executed in parallel + * + * @param task + */ + public void add(final Runnable task) + { + tasks.add(task); + } + + /** + * starts all the added tasks in parallel + * + * @throws InterruptedException + */ + public void startParallelTasks() throws InterruptedException + { + final ExecutorService threads = Executors.newFixedThreadPool(Runtime.getRuntime() + .availableProcessors()); + try + { + final CountDownLatch latch = new CountDownLatch(tasks.size()); + for (final Runnable task : tasks) + threads.execute(new Runnable() { + public void run() + { + try + { + task.run(); + } + finally + { + latch.countDown(); + } + } + }); + latch.await(); + } + finally + { + threads.shutdown(); + } + } +}
\ No newline at end of file |