Inicie el programa Java solo si aún no está ejecutando

Necesito iniciar 1-3 programas externos en mi aplicación Java que tengan rutas definidas por el usuario. Tengo pocos requisitos:

No quiero que el programa se ejecute si ya se está ejecutando

No quiero que ninguno de los programas robe el foco de mi aplicación Java

No me importa si alguno de ellos no se inicia o no. Solo necesitan fallar en silencio.

Esto es lo que se me ocurrió hasta ahora:

ProcessBuilder pb = new ProcessBuilder(userDefinedPath1);
try {
    pb.start();
}
catch (Exception e) {
    // Something went wrong, just ignore
}

Y luego repito eso 3 veces más con los otros dos caminos. Esto comienza como era de esperar y cumple mi tercer requisito muy bien, pero falla en los dos primeros.

¿Cuál es la mejor manera de hacer esto

Editar

No tengo ningún control sobre estas otras aplicaciones. Son de terceros. Además, el usuario podría haberlos iniciado o detenido manualmente en cualquier momento.

Sé que elexact nombres de los ejecutables (por ejemplo, "blah.exe") y ellossiempr será el mismo, pero las rutas a los ejecutables no serán necesariamente.

os envoltorios de archivos por lotes no son factibles aqu

Las otras aplicaciones sonn aplicaciones Java, simplemente ejecutables viejos de Windows.

Respuestas a la pregunta(9)

Su respuesta a la pregunta