tufan: snapshot von einem thread

Beitrag lesen

hallo,

ich habe heute mit einem Java Problem zu kämpfen.
Folgende Situation:

Mein Programm soll verschiedene Sortieralgorithmen graphisch darstellen.
Sortieralgorithmen sollen nebenläufig ablaufen und es soll möglich sein, modular weitere Sortierallgorithmen hinzuzufügen.
Der Status des (sortierten) Arrays soll in einem vordefinierten Zeitintervall abgefragt und graphisch dargestellt werden.

  • Für die Modularität setze ich ein eigenes ClassLoader ein.
  • Sortierallgorithmen müssen mein Interface SortModule implementieren
  • und erweitern die Klasse Thread.

Mein Problem resultiert daraus, dass ich die durch das Constructer-Object von Reflect erstellte Instanz der Sortiermodule nicht in mein Interface SortModule casten kann.
Dafür ist folgender Code zuständig:

  
  Enumeration en = this.selectedAllgorithms.elements();  
  
      while(en.hasMoreElements())  
      {  
        String className = en.nextElement().toString();  
  
        String classPath = "pfad zur Klasse"+className;  
        CustomClassLoader ccl = new CustomClassLoader();  
  
        Class c = ccl.loadClass( classPath );  
  
        Constructor[] theConstructors = c.getConstructors();  
        Class[] parameterTypes = theConstructors[0].getParameterTypes();  
  
        Constructor cons = c.getConstructor(parameterTypes);  
  
        Object argumentsList[] = new Object[2];  
        argumentsList[0] = this;  
        argumentsList[1] = this.data;  
        Thread sm =  (Thread)cons.newInstance(argumentsList);  /* hier funktioniert der type cast in SortModule nicht: SortModule sm =  (SortModule)cons.newInstance(argumentsList); )*/  
        sm.start();  
      }  

da sm vom Typ Thread sein muss; kann ich die Variablen und Methoden meiner Sortierklasse nur über getField() und invoke() bekommen (wenn es andere Möglichkeiten gibt, bin ich froh, diese zu hören).
Ich habe jedoch keine Möglichkeit gefunden ein Integer Array zu erhalten (das Array, das sortiert werden soll; und von dem ich die Snapschüsse brauche).

Kontrollerklasse -- starts (mit dem obigen Code) --> BubbleSort (sortiert einwandfrei, in echtzeit kann ich auch eine sehr hübsche Animation darstellen.

Wie kann ich das ganze zeitversetzt visualisieren?
Ist es möglich, dass sm alle 300 ms irgendwie das Array an die Kontrollerklasse schmeisst (welche es fängt, und daraus ein Bild generiert)?
oder alle 300ms holt sich die Kontrollerklasse das Array vom sm?

Bin für Vorschläge dankbar.

Grüße aus Berlin,

tufi