newFixedThreadPool

felix.pdm

Mitglied
Hallo,

ich arbeite mit Threads und würde diese nun gern mit einem newFixedThreadPool begrenzen. Leider ist mir noch nicht ganz klar, wie ich das umsetzen kann.
Ich habe folgendes Konstrukt:

Java:
public class Klasse1{
   private ExecutorService executor = Executors.newFixedThreadPool(1);
   public void methode(){
       Threadklasse tk = new Threadklasse();
       executor.submit(tk);
       tk.start(){....};
   }
}

und die Threadklasse:
Java:
public class Threadklasse extends Thread{
   run(){...};
}

Die parallele Ausführung klappt auch soweit. Was hat es jetzt mit dem executor.submit auf sich? Was macht das? Wollte damit jetzt eigentlich erreichen, dass nur noch ein Thread erlaubt ist, um zu sehen, dass das funktioniert. Es werden allerdings immer noch mehrere Threads parallel ausgeführt. Was fehlt noch?

Vielen Dank für Hilfe.
 

Raum114

Mitglied
Ich weiss nicht was "tk.start(){....};" bedeuten soll, das {....} ergiebt für mich keinen Sinn. Jedenfalls musst du nicht mehr die start() Methode selber aufrufen, das macht der Service für dich. Mit submit() kannst du nun Runnables oder Callables vom Service für dich ausführen lassen, die der Service wie gesagt selbst startet. Wobei Callables, wegen der einfacheren Handhabung eigentlich zu bevorzugen wären.
 

felix.pdm

Mitglied
ja richtig das {...} ist zuviel. sorry.
also müsste das jetzt einfach wie folgt aussehen und mehr ist dabei nicht zu beachten? Scheint zumindest erstmal so zu funktionieren.
Java:
public class Klasse1{
   private ExecutorService executor = Executors.newFixedThreadPool(1);
   public void methode(){
       Threadklasse tk = new Threadklasse();
       executor.submit(tk);
   }
}
Da die Thredklasse ja von Thread erbt und dieser Runnable implementiert, werde ich wohl das so nehmen.

Und weißt du auch noch nach welchen Kriterien man entscheidet, wieviele parallele Threads sinnvoll sind?
 
Zuletzt bearbeitet:

Neue Themen


Oben