Ho un file jar che ha il compito di avviare una pagina web in automatico (google) o un indirizzo che gli viene passato come argomento al jar. Avvio il browser tramite
codice:
public static void main(String[] args) {
  Desktop d = Desktop.getDesktop ();
  try {
    if (args.length == 0)
      d.browse(new URI ("http://www.google.com"));
    else
      d.browse(new URI (args[0]));
  } catch (Exception e) { e.printStackTrace(); 
}
Ho un codice che deve controllare se esiste la connessione ad internet. Se esiste deve aprire una pagina web predefinita (appunto google) oppure può ricevere richieste da applicazioni esterne che gli indicano un indirizzo da visitare.

Il tutto viene eseguito tramite

codice:
Process proc = Runtime.getRuntime().exec(comando);
dove comando contiene o semplicemente il file jar di prima o l'indirizzo della pagina da aprire.

Il problema che ho è che se lascio fare al programma ogni tot secondi (il tempo in cui controlla se esiste la connessione) mi apre una pagina web, aprendone quindi in continuazione, mentre dovrebbe aprirne una sola.
Ho provato a usare

codice:
proc.waitFor();
ma appena avviato il processo, mi ritorna come codice di terminazione 0 e quindi al successivo ciclo ritorna ad eseguire il file .jar

In teoria, il thread che esegue la exec non dovrebbe rimanere in attesa bloccato fin quando il browser non viene chiuso?

E se no, come faccio per prima cosa a stoppare l'esecuzione di 20000 pagine web, e poi a controllare che il browser web sia in esecuzione?

Scusate la lunghezza