mdg2004 Geschrieben 26. Juni 2009 Geschrieben 26. Juni 2009 Hallo alle zusammen, ich habe folgendes Problem: Ich habe eine Reihe von Aufgaben / Tasks. Sagen wir 100 Stück. (Hatte vor diese über Runable Objekte zu realisieren.) Diese möchte ich nun parallel in "5er-Paketen" via 5 Threads abarbeiten. Immer wenn einer dieser 5 Threads frei wird, also dessen momentan zugeordneter Task terminiert, soll ein neuer Task nachrücken, sodass stets 5 parallel am Laufen sind. Wie realisiere ich so etwas am besten ? Mit einem ThreadPool und einer Art Queue? Ich steh gerade ein bisschen aufm Schlauch ... könnt ihr mir einen Tipp geben, was genau ich suche? Vielen Dank schonmal! Gruß mdg2004
flashpixx Geschrieben 26. Juni 2009 Geschrieben 26. Juni 2009 evtl schaust Du Dir das mal an ThreadGroup (Java 2 Platform SE v1.4.2) Aber was mich im Moment stört, dass Du immer 5 aktive Tasks haben willst und diese als Gruppe betrachteten möchtest. Mir ist der Zweck davon nicht klar. Warum 5 und nicht 10 oder 2. Vielleicht beschreibst Du mal die Problemstellung, damit evtl darüber nachdenken kann Phil
mdg2004 Geschrieben 26. Juni 2009 Autor Geschrieben 26. Juni 2009 Danke. Die Zahl ist nur ein Bsp. - es spielt eigentlich keine Rolle, wie viele es sind. 5 nehme ich deswegen, weil ich schätze das 5 meiner Tasks meinen Server genug auslasten / nicht überlasten würden. (Es werden Daten heruntergeladen, geparsed und weiterverarbeitet in so einem Task.)
perdian Geschrieben 29. Juni 2009 Geschrieben 29. Juni 2009 könnt ihr mir einen Tipp geben, was genau ich suche?Du suchst die Java Concurrency Utilities.
flashpixx Geschrieben 29. Juni 2009 Geschrieben 29. Juni 2009 Ich will einmal zu bedenken geben, wirklich gut über die "Parallelisierung" nachzudenken. Nur weil es parallel verarbeitet wird, ist es nicht schneller. Um eine gute Parallelisierung zu erreichen, solltest Du Dein Problem zunächst wirklich umfassend analysieren, denn z.B. wenn Du irgendwo einen Datenaustausch (Mutex) zwischen zwei Tasks hast, kann Dir das unter Umständen jeden Performancegewinn wieder zu nichte machen Phil
mdg2004 Geschrieben 29. Juni 2009 Autor Geschrieben 29. Juni 2009 Ich habe jetzt den hier verwendet: ThreadPoolExecutor (Java Platform SE 6) Vielen Dank für eure Tipps! Gruß MdG2004
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden