Avatar billede tl Nybegynder
29. november 2003 - 11:43 Der er 4 kommentarer og
1 løsning

Load af flere applikationer i Java.

Hej...

Jeg har lavet følgende lille smarte program i Java, der kan starte flere andre javaprogrammer i en separat JVM.

Men den starter kun applikationerne af en af gangen, dvs, man skal lukke den ene før den starter den anden op, og den skulle helst starte alle samtidigt.

Man kan sikkert gøre det ved at starte separate tråde for hver opstart, men spørgsmålet er hvordan?


import java.util.*;
import java.io.*;

public class TestExec
{
    public static void main(String args[])
    {
        start("java Module1");
        start("java Module2");
    }
       
  public static void start(String command)
    {
        try
        {
            String cmd = command;
            Runtime rt = Runtime.getRuntime();
           
            Process proc = rt.exec(cmd);
           
           
            // any error message?
            StreamGobbler errorGobbler = new
                StreamGobbler(proc.getErrorStream(), "ERR");           
           
            // any output?
            StreamGobbler outputGobbler = new
                StreamGobbler(proc.getInputStream(), "OUT");
               
            // kick them off
            errorGobbler.start();
            outputGobbler.start();
                                   
            // any error???
            int exitVal = proc.waitFor();
            System.out.println("ExitValue: " + exitVal);
        } catch (Throwable t)
          {
            t.printStackTrace();
          }
    }
}
Avatar billede arne_v Ekspert
29. november 2003 - 11:54 #1
To muligheder:

1)  lav din app multi trådet og kør hvert sit program i hver sin tråd

2)  lad exec køre en komamndo som starter en anden process og
    afslutter (windows: start kommando)
Avatar billede tl Nybegynder
29. november 2003 - 12:07 #2
ok... kan du give eksempel på nr 2?
Avatar billede tl Nybegynder
29. november 2003 - 12:18 #3
jeg får nemlig en fejl med den...

java.IO.ioeception: CreateProcess start java Module1 error=2
Avatar billede arne_v Ekspert
29. november 2003 - 12:23 #4
import java.io.IOException;

public class MulWin {
    public static void main(String[] args) {
        DoIt[] x = new DoIt[5];
        for(int i = 0; i < 5; i++) {
            x[i] = new DoIt();
        }
        for(int i = 0; i < 5; i++) {
            x[i].start();
        }
        for(int i = 0; i < 5; i++) {
            try {
                x[i].join();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

class DoIt extends Thread {
    public void run() {
        try {
            Runtime.getRuntime().exec("cmd /c start pause");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
Avatar billede arne_v Ekspert
01. december 2003 - 22:43 #5
OK ?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester