Hallo Leute,
in der Uni arbeiten wir grad an verschiedensten Projekten. Es geht weitestgehend um Visualisierungen, in meinem Fall um Wellenfunktionen. Wobei wir damit direkt zu meinem Problem kommen.
Damit ich noch nebenbei weiter meine Oberfläche nutzen kann, starte ich einen extra Thread in dem meine Berechnungen ausgeführt werden.
Das eigentlich interessante geschieht natürlich in Anim:
Das Problem ist, dass die Funktion wave.height(double x, double y, double t) ziemlich aufwendig ist.
Nun kam mir die Idee vielleicht schon einiges vorweg berechnen zu lassen in einem neuerem Thread. Allerdings könnte es dann passieren, dass der zweite Thread Anim auf den der h berechnet warten müsste.
Das wahre Problem aber ist, ich kenn einiges der Theorie hinter Threads aber ich konnt sie nie wirklich anwenden.
Wie könnte ich das an dieser Stelle realisieren? Zum Beispiel das ich einen extra Thread rechnen lasse und ein anderer stets nur die Ergebnisse nutzt.
Nur.... wie geht das?
Und vor allem, würde das überhaupt nutzen tragen?
Ich hoffe ihr könnt mir helfen. Vielen Dank schon mal im voraus und liebe Grüße
Highchiller
in der Uni arbeiten wir grad an verschiedensten Projekten. Es geht weitestgehend um Visualisierungen, in meinem Fall um Wellenfunktionen. Wobei wir damit direkt zu meinem Problem kommen.
Damit ich noch nebenbei weiter meine Oberfläche nutzen kann, starte ich einen extra Thread in dem meine Berechnungen ausgeführt werden.
Java:
@Override
public void faceDragStart(FaceDragEvent e) {
/* Hier passiert nicht viel, nur der Thread wird aufgerufen */
Thread t1 = new Anim( startPos );
t1.start();
}
Das eigentlich interessante geschieht natürlich in Anim:
Java:
@Override
public void run(){
double t = 0, h = 0;
while ( t < 2 ){
deformGeo.refresh();
for (int index = 0; index < numOfVerts; index++){
double[] pos = deformGeo.getCoordinates( index );
/* Hier liegt das Problemchen */
h = wave.height(pos[0], pos[1], t);
deformGeo.translateVertex(index, h);
}
deformGeo.update();
t += 0.01;
}
}
Das Problem ist, dass die Funktion wave.height(double x, double y, double t) ziemlich aufwendig ist.
Nun kam mir die Idee vielleicht schon einiges vorweg berechnen zu lassen in einem neuerem Thread. Allerdings könnte es dann passieren, dass der zweite Thread Anim auf den der h berechnet warten müsste.
Das wahre Problem aber ist, ich kenn einiges der Theorie hinter Threads aber ich konnt sie nie wirklich anwenden.
Wie könnte ich das an dieser Stelle realisieren? Zum Beispiel das ich einen extra Thread rechnen lasse und ein anderer stets nur die Ergebnisse nutzt.
Nur.... wie geht das?
Ich hoffe ihr könnt mir helfen. Vielen Dank schon mal im voraus und liebe Grüße
Highchiller