Index: trunk/src/org/openstreetmap/josm/spi/lifecycle/Lifecycle.java
===================================================================
--- trunk/src/org/openstreetmap/josm/spi/lifecycle/Lifecycle.java	(revision 16994)
+++ trunk/src/org/openstreetmap/josm/spi/lifecycle/Lifecycle.java	(revision 16995)
@@ -6,8 +6,10 @@
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.ExecutorService;
-import java.util.concurrent.ForkJoinPool;
+import java.util.concurrent.Executors;
 import java.util.concurrent.Future;
 
 import org.openstreetmap.josm.tools.JosmRuntimeException;
+import org.openstreetmap.josm.tools.Logging;
+import org.openstreetmap.josm.tools.Utils;
 import org.openstreetmap.josm.tools.bugreport.BugReport;
 
@@ -71,5 +73,6 @@
         // Initializes tasks to be executed (in parallel) by a ExecutorService
         try {
-            ExecutorService service = ForkJoinPool.commonPool();
+            ExecutorService service = Executors.newFixedThreadPool(
+                    Runtime.getRuntime().availableProcessors(), Utils.newThreadFactory("main-init-%d", Thread.NORM_PRIORITY));
             for (Future<Void> i : service.invokeAll(initSequence.parallelInitializationTasks())) {
                 i.get();
@@ -78,4 +81,9 @@
             initSequence.asynchronousRunnableTasks().forEach(service::submit);
             initSequence.asynchronousCallableTasks().forEach(service::submit);
+            try {
+                service.shutdown();
+            } catch (SecurityException e) {
+                Logging.log(Logging.LEVEL_ERROR, "Unable to shutdown executor service", e);
+            }
         } catch (InterruptedException | ExecutionException ex) {
             throw new JosmRuntimeException(ex);
