aboutsummaryrefslogtreecommitdiffstats
path: root/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/utils/ParallelTasks.java
diff options
context:
space:
mode:
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.java87
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