Inicie o programa Java apenas se ainda não estiver executando o

Preciso iniciar 1-3 programas externos no meu aplicativo Java que possuam caminhos definidos pelo usuário. Eu tenho alguns requisitos:

Não quero que o programa seja executado se já estiver em execução

Não quero que nenhum dos programas roube o foco do meu aplicativo Java

Eu não me importo se algum deles falhar ao iniciar ou não. Eles só precisam falhar silenciosamente.

Aqui está o que eu criei até agora:

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

E depois repito mais três vezes com os outros dois caminhos. Isso começa como eu esperaria e atende ao meu terceiro requisito, mas falha nos dois primeiro

Qual é a melhor maneira de fazer isso?

Editar

Não tenho controle sobre esses outros aplicativos. Eles são de terceiros. Além disso, eles poderiam ter sido iniciados ou interrompidos pelo usuário manualmente a qualquer moment

Eu conheço oexat nomes dos executáveis (por exemplo, "blah.exe") e eles serãosempr seja o mesmo, mas os caminhos para os executáveis não serão necessariament

Wrappers de arquivos em lote não são viáveis aqu

Os outros aplicativos sãonãplicativos java, simples executáveis antigos do Window

questionAnswers(9)

yourAnswerToTheQuestion