Je ne suis pas expert en GUI java (et l'aspect thread safe de l'ensemble), mais pour moi, ton thread peut faire "tout" le boulot de simulation (le code que tu as donné en exemple à mettre dans la méthode run)...
Par contre, il faut prévoir une machine d'état avec un "check" d'arrêt pour éviter d'attendre la fin de la simulation à chaque fois
Code :
- public enum simulation_states_connection = { SIM_BEFORE_CONNECT, SIM_CONNECTING ...,SIM_FINISHED};
- //dans le run
- states_connection curr_state;
- while (curr_state != SIM_FINISHED){
- switch(curr_state){
- case SIM_BEFORE_CONNECT:
- jLabel.setText("Starting" );
- //autres actions
- sleep(100);
- curr_state = CONNECTING;
- break;
- case CONNECTING:
- //...
- case
- }
- if(termination_request){
- break;
- }
- }
|
Pour ce qui est de la variable termination_request, il faut que ça soit une variable protégée par des accesseurs "synchronized"...
Il faudrait créer un thread à chaque début de simulation et bien le "terminer" avant d'en créer un autre.
En espérant que ça aide