Hi,
ich bin mir sicher, dass ich nicht der Erste sein kann der dieses Problem hat, jedoch suche ich scheinbar nach den falschen Begriffen, oder gehe von vornherein ganz falsch an das Problem heran, denn bis jetzt habe ich noch nichts brauchbares gefunden.
Es geht um folgendes:
Ich habe eine Klasse (abgeleitet von Thread) die Berechnungen vornimmt. Diese Berechnungen sind voneinander unabhängig.
Ich möchte nun dass ständig mehrere dieser Threads ihre Arbeit verrichten (am besten soviele wie es Rechenkerne gibt), d.h. z.B. 4 Threads gestartet werden und erst wenn einer davon fertig ist, der nächste gestartet wird. Wie implementiere ich das sinnvoll?
Unten der Code, den ich bisher habe (der, der in der Main-Methode aufgerufen wird), dieser produziert allerdings (ist ja logisch) selbst schon eine sehr hohe CPU-Auslastung (sorry, irgendwie kann ich keinerlei formatierungen vornehmen, werde versuchen das bei Gelegenheit nachzuholen):
ich bin mir sicher, dass ich nicht der Erste sein kann der dieses Problem hat, jedoch suche ich scheinbar nach den falschen Begriffen, oder gehe von vornherein ganz falsch an das Problem heran, denn bis jetzt habe ich noch nichts brauchbares gefunden.
Es geht um folgendes:
Ich habe eine Klasse (abgeleitet von Thread) die Berechnungen vornimmt. Diese Berechnungen sind voneinander unabhängig.
Ich möchte nun dass ständig mehrere dieser Threads ihre Arbeit verrichten (am besten soviele wie es Rechenkerne gibt), d.h. z.B. 4 Threads gestartet werden und erst wenn einer davon fertig ist, der nächste gestartet wird. Wie implementiere ich das sinnvoll?
Unten der Code, den ich bisher habe (der, der in der Main-Methode aufgerufen wird), dieser produziert allerdings (ist ja logisch) selbst schon eine sehr hohe CPU-Auslastung (sorry, irgendwie kann ich keinerlei formatierungen vornehmen, werde versuchen das bei Gelegenheit nachzuholen):
Java:
for(int x=0; x<irgendwas; x++) { //läuft durch alle "x" die berechnet werden müssen
while(Thread.activeCount()>=4) {}; //<- führt selbstverständlich zu hoher CPU-Last
//ein sleep() an dieser Stelle scheint die komplette Berechnung auszubremsen
CalculationThread thread = new CalculationThread(x);
thread.start();
}
Zuletzt bearbeitet: