jeudi 19 février 2015

Allgemeine parallelisierte Loesung um Daten im Hintergrund zu laden..?

Hallo,



ich will Daten beim Programm-Start in einem extra Thread bzw. mit einem Threadpool mit geringer Prioritaet (d.h. andere Prozesse sollen nicht verlangsamt werden - vor allem nicht die UI) im Hintergrund laden.

Ich koennte die Daten auch just-in-time generieren, aber dann muesste der Nutzer mitunter unnoetig lange darauf warten.



Die Daten sollen in einer Map<String, T_DatenKlasse> abgelegt werden. Generics ausdruecklich moeglich.



Am liebsten haette ich eine abstrakte Klasse ParallellHelper die die ganzen Details wegkapselt. Man selbst erweitert dann lediglich die Klasse ParallellHelper und implementiert Methoden die z.B. die Daten generieren und man bekommt zugriff auf die Daten via get(String key), welche die T_DatenKlasse-Objekte aus der Map holt.



Um das ganze zu starten instanziert man seine ParallellHelper-Klasse und ruft einmalig .start() auf.



!!! ABER !!!



Die Klasse ParallellHelper sollte vor allem wegkapseln, dass man den Fall hat, dass der Pool gerade die Daten erzeugt, waehrend der Nutzer Daten per get(Key) abrufen will. Dann sollte ParallellHelper CLEVER sein und alle Arbeit liegen lassen und das mittels "Key" geforderte Objekt generieren!

Eventuell wurschtelt ParallellHelper ja auch gerade an dem gesuchten Objekt. Dann sollten alle Threads bis auf den der gerade das gesuchte Objekt generiert nix tun damit sie nicht die Objekt-Generierung verlangsamen.

Ist das Objekt "ausgeliefert" sollte die Objektgenerierung wieder wie gewohnt fortfahren.



Hat jemand von euch Erfahrung oder Vorschlaege wie man sowas macht? Eventuell vielleicht schon eine Klasse die etwas sehr Aehnliches macht?



vielen Dank,

sb





Allgemeine parallelisierte Loesung um Daten im Hintergrund zu laden..?

0 commentaires:

Enregistrer un commentaire