Index: /trunk/src/org/openstreetmap/josm/Main.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/Main.java	(revision 11994)
+++ /trunk/src/org/openstreetmap/josm/Main.java	(revision 11995)
@@ -830,6 +830,7 @@
      * Handle command line instructions after GUI has been initialized.
      * @param args program arguments
-     */
-    protected static void postConstructorProcessCmdLine(ProgramArguments args) {
+     * @return the list of submitted tasks
+     */
+    protected static List<Future<?>> postConstructorProcessCmdLine(ProgramArguments args) {
         List<Future<?>> tasks = new ArrayList<>();
         List<File> fileList = new ArrayList<>();
@@ -843,15 +844,13 @@
             tasks.addAll(DownloadParamType.paramType(s).downloadGps(s));
         }
-        // Make sure all download tasks complete before handling selection arguments
-        for (Future<?> task : tasks) {
-            try {
-                task.get();
-            } catch (InterruptedException | ExecutionException e) {
-                error(e);
-            }
-        }
-        for (String s : args.get(Option.SELECTION)) {
-            SearchAction.search(s, SearchAction.SearchMode.add);
-        }
+        final Collection<String> selectionArguments = args.get(Option.SELECTION);
+        if (!selectionArguments.isEmpty()) {
+            tasks.add(Main.worker.submit(() -> {
+                for (String s : selectionArguments) {
+                    SearchAction.search(s, SearchAction.SearchMode.add);
+                }
+            }));
+        }
+        return tasks;
     }
 
Index: /trunk/test/unit/org/openstreetmap/josm/MainTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/MainTest.java	(revision 11994)
+++ /trunk/test/unit/org/openstreetmap/josm/MainTest.java	(revision 11995)
@@ -12,4 +12,6 @@
 import java.util.Collection;
 import java.util.List;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Future;
 
 import javax.swing.UIManager;
@@ -100,8 +102,14 @@
     private static void doTestPostConstructorProcessCmdLine(String download, String downloadGps, boolean gpx) {
         assertNull(Main.getLayerManager().getEditDataSet());
-        Main.postConstructorProcessCmdLine(new ProgramArguments(new String[]{
+        for (Future<?> f : Main.postConstructorProcessCmdLine(new ProgramArguments(new String[]{
                 "--download=" + download,
                 "--downloadgps=" + downloadGps,
-                "--selection=type: node"}));
+                "--selection=type: node"}))) {
+            try {
+                f.get();
+            } catch (InterruptedException | ExecutionException e) {
+                Main.error(e);
+            }
+        }
         DataSet ds = Main.getLayerManager().getEditDataSet();
         assertNotNull(ds);
