Gå til innhold

[LØYST] Starte flere tråder ved hjelp av ei løkke / Start multiple threads with a loop


Anbefalte innlegg

Hei,

 

korleis kan eg starte fleire trådar ved hjelp av ei løkke? Sjå kode under, pluss forklaring under der igjen.

 

 

public class Main {
 public static void main( String[] args ) {
   for( int i = 0; i < 1000; i++) {
      (new Traad(i)).run();
   }
   System.out.println("Ferdig!");
 }
}

public class Traad extends Thread {
private int i;
 public Traad( int initI ) {
   this i = initI;
 }
 @Override
 public run() {
   // do something
  this.interrupt();
 }
}

Dette er ein forenkla versjon av det eg skal få til.

 

Når eg no køyrer Main, so vil kvar iterasjon av for-løkka vente til kvar tråd er ferdig med det den skal gjere, istaden for at den starter eit object av Traad og går vidare til å starte eit nytt object av Traad. Korleis kan eg få til dette? Grunnen er at eg har eit ukjent antall av Traad-objekt eg skal starte, og vil dermed gjere dette i ei løkke. Takk for svar!

Endret av Øystein T.
Lenke til kommentar
Videoannonse
Annonse

For å starte en tråd, bruker du start(), ikke run(). ;)

Hvis du kaller run-metoden direkte, starter den ikke i en ny tråd, men hvis du kaller start-metoden, så kaller Thread-klassen run metoden for deg, i en ny tråd. :)

 

Du kan også gjøre sånn her for det samme, bare uten mange klasser:

public static void main(String[] args) {
  Runnable run = new Runnable() {
  public void run() {
	 // Trådkode her
  }
};

Thread t = new Thread(run);
t.start(); // Starter tråden
}

(hvis jeg husker rett - har ikke programmert i Java på en stund)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...