G
Gast
Gast
Hallo,
ich habe folgendes Problem. Ich soll eine java applikation schreiben die primzaheln findet und zwar mit dem sieb des erathostene. So klappt alles suuuuper. aber die abbruchbedingung fehlt. die threads beenden sich am ende einfach nicht was zur folge hat, das die threads super arbeiten auch alles ausgeben aber das programm nicht beendet wird. was soll ich tun?? Hier mal der source:
Hoffe ihr könnt helfen!!!
DANKE!
ich habe folgendes Problem. Ich soll eine java applikation schreiben die primzaheln findet und zwar mit dem sieb des erathostene. So klappt alles suuuuper. aber die abbruchbedingung fehlt. die threads beenden sich am ende einfach nicht was zur folge hat, das die threads super arbeiten auch alles ausgeben aber das programm nicht beendet wird. was soll ich tun?? Hier mal der source:
Code:
class Filter extends Thread { // ein Filter ist ein Thread
private final int N; // dieser Filter repraesentiert die Primzahl N
private Filter next; // der naechste Filter entlang der Thread-Pipeline
private ArrayBlockingQueue<Integer> source; // meine Zahlen-Quelle
private ArrayBlockingQueue<Integer> sink; // meine Zahlen-Senke
static final int buflen = 10;
public Filter(ArrayBlockingQueue<Integer> quelle, int n) {
N = n;
source = quelle;
System.out.println(N); // eine neue Primzahl ist gefunden
}
public void run () { // der Lebenslauf jedes Filter-Threads
while (true) {
try {
int n = source.take();
if(source.size() == 0){interrupt();}
t("gets "+n);
if (n % N == 0) { continue; }
if (next == null) { // wenn next noch nicht existiert
sink = new ArrayBlockingQueue<Integer>(buflen); //neuer Queue
next = new Filter(sink, n); // next wird der nächste Thread zugeordnet
next.start(); //thread wird gestartet
}
try {
sink.put(n);
} catch (InterruptedException e) {}
} catch (InterruptedException e) {break;} //erstes try/catch beenden
}
}
Hoffe ihr könnt helfen!!!
DANKE!