Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/concurrent')
-rw-r--r--plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/concurrent/ConcurrencyUtil.java29
1 files changed, 29 insertions, 0 deletions
diff --git a/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/concurrent/ConcurrencyUtil.java b/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/concurrent/ConcurrencyUtil.java
index 5a9905e821..89e21dfc26 100644
--- a/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/concurrent/ConcurrencyUtil.java
+++ b/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/concurrent/ConcurrencyUtil.java
@@ -12,6 +12,7 @@ package org.eclipse.net4j.util.concurrent;
import org.eclipse.net4j.util.container.IManagedContainer;
+import java.util.concurrent.Executor;
import java.util.concurrent.ExecutorService;
/**
@@ -86,4 +87,32 @@ public final class ConcurrencyUtil
return null;
}
+
+ /**
+ * @since 3.6
+ */
+ public static void execute(Object executor, Runnable runnable)
+ {
+ if (executor instanceof Executor)
+ {
+ ((Executor)executor).execute(runnable);
+ return;
+ }
+
+ ExecutorService executorService = getExecutorService(executor);
+ if (executorService == null && executor instanceof IManagedContainer)
+ {
+ executorService = getExecutorService((IManagedContainer)executor);
+ }
+
+ if (executorService != null)
+ {
+ executorService.execute(runnable);
+ return;
+ }
+
+ Thread thread = new Thread(runnable, runnable.getClass().getSimpleName());
+ thread.setDaemon(true);
+ thread.start();
+ }
}

Back to the top