Threads erzeugen

Teldec

Grünschnabel
Hallo,

ich möchte mir in einer Schleife eine gewisse Anzahl an Threads erzeugen, mein Problem ist das ich die Threads unterschiedlich benennen will und nicht alle j nennen will. Ich wollte sie eigentlich mit Hilfe der Schleifenvariable durchnummerrieren, leider bekomme ich da einen fehler:" i is already defined in main (java.lang.String[]) könnte mir vielleicht jemand weiterhelfen

for ( int i = 0; i < limit; i++ ){

Thread i = new Thread( newData() );
i.start();

}

Gruss und Danke
 
Hi.

Da mußt du schon ein Array nehmen (wenn du die Threads speichern möchtest) ansonsten kannst du einer Variablen nur einen Namen geben und nicht mehrere. Außerdem kannst du den Typ einer Variablen nicht plötzlich ändern oder die Variable mehrfach definieren.

Code:
Thread[] threads = new Thread[limit];

for (int i = 0; i < limit; ++i) {
  threads[i] = new Thread(new Data());
  threads[i].start ();
}

Gruß
 
Hallo!

Wenn man eine reihe (gleichartiger) Threads erzeugt, sollte man sie in eine ThreadGroup stecken.
Siehe:
Code:
 /**
  * 
  */
 package de.tutorials;
 
 import java.util.Random;
 import java.util.concurrent.TimeUnit;
 
 /**
  * @author Tom
  * 
  */
 public class MultipleThreadExample {
 
 	/**
 	 * @param args
 	 */
 	public static void main(String[] args) {
 
 		final Random rnd = new Random();
 
 		Runnable runnable = new Runnable() {
 			public void run() {
 		    	for (int i = 0, end = rnd.nextInt(100); i < end; i += 4) {
 		    	    System.out.println(Thread.currentThread().getName() + ": "
 		    		    	+ i + " of " + end);
 					try {
 		    		    TimeUnit.SECONDS.sleep(2L);
 		    		} catch (InterruptedException e) {
 		    		    e.printStackTrace();
 					}
 				}
 			}
 		};
 
 		ThreadGroup workerGroup = new ThreadGroup("WORKER_THREADS");
 
 		for (int i = 0; i < 10; i++) {
 			new Thread(workerGroup, runnable).start();
 		}
 
 		// ...
 
 		while (workerGroup.activeCount() > 0) {
 			System.out.println(workerGroup.activeCount()
 		    		+ " Threads are currently running...");
 			try {
 				TimeUnit.SECONDS.sleep(2L);
 			} catch (InterruptedException e) {
 				e.printStackTrace();
 			}
 		}
 
 	}
 
 }

Gruss Tom
 

Neue Beiträge

Zurück