[Mondrian] Multithreading, Parallel Batch / Query Execution

michael bienstein mbienstein at yahoo.fr
Wed Apr 18 19:58:54 EDT 2007


I have a few of points:

First off it is nice to see some real investigation as to bottlenecks.  I don't understand the "block count" or "block duration".  I can understand cumulative method duration and number of method calls.  How these figures would be affected by multiple parallel threads though I don't know since the duration of two threads would get added.  Can you enlighten me please as to how they are calculated?

1) How do you launch a worker thread with no managed threads? My guess is a simple new Thread(...).start();  If so this is too simplistic and you should see how it works when you have multiple users.  The number of threads would go far too high and the overall performance will become really bad.
2) You can't use ConcurrentHashMap because Mondrian must be able to be backported to JDK 1.4 via retroweaver.
3) Similarly you would need to roll your own reentrant locks.
4) The synchronized lazy initialization can always be converted to a design pattern that Josh Bloch wrote up:

class MyClass {
    static MyClass getSingleton() {
        return InnerClass.singleton;

    private static InnerClass {
        MyClass singleton = new MyClass();

The Java Language will static initialize in a thread safe way just once.


Découvrez une nouvelle façon d'obtenir des réponses à toutes vos questions ! 
Profitez des connaissances, des opinions et des expériences des internautes sur Yahoo! Questions/Réponses 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.pentaho.org/pipermail/mondrian/attachments/20070418/a1647e88/attachment.html 

More information about the Mondrian mailing list