Montag, 8. September 2014

Executors and Job Queues

Wenn ich eine Reihe von Jobs (Runnable oder Callable) habe, die ich gerade parallel ausführen lassen möchte, kann ich das mit Threads lösen. Die modernere Variante sind jedoch angepasste Executoren. Hier wird es aber schnell aufwendig, wenn ich eine Queue der beendeten Futures verwalten möchte. Eine einfachere Lösung bietet hier Guava mit der ListenableFuture Klasse an. Mit Hilfe der Executor-Decoratoren lassen sich die Standard Java Executoren verwenden, so dass der Code-Overhead an dieser Stelle minimiert werden kann. Ein kleines Anwendungsbeispiel lässt sich in oben erwähntem Link finden.


Dienstag, 2. September 2014

Reflection, neue Instanz und Generics

Es gibt Gelegenheiten, wo man eine Klasse über Reflection erzeugen möchte, dabei aber auch hässliche Casts verzichten will.

Am einfachsten geht die wie folgt:
Class<?> genClazz = Class.forName(className);
Class<? extends XYZ> clazz = genClazz.asSubclass(XYZ.class);
Constructor<? extends XYZ> ctor = clazz.getConstructor(String.class, Integer.TYPE);
XYZ var = ctor.newInstance("bla", 10);