Bonjour j'ai un problème de threads. Voici mon code:
Ceci est mon chronometre:
Code :
- import java.lang.Thread ;
- public class Chronometre extends Thread {
- private int secondes = 0 ;
- private long attente = 1000 ;
- public Chronometre ( ) {
- }
- public void run ( ) {
- try {
- while ( true ) {
- secondes++ ;
- if ( interrupted ( ) ){
- System.out.println ( "on m a arrete" ) ;
- return ;
- }
- System.out.println( secondes ) ;
- sleep ( attente ) ;
- }
- } catch ( InterruptedException e ) {
- System.out.println ( "on m a arrete par exception" ) ;
- return ;
- }
- }
- }
|
j'ai une classe jeu avec une méthode lanceChrono ( boolean ) :
Code :
- public void lanceChrono ( boolean test ) {
- if ( test ){
- Chronometre chrono = new Chronometre ( ) ;
- chrono.start ( ) ;
- }
- else {
- chrono.interrupt ( ) ;
- }
- }
|
La thread se lance bien mais j'ai une NullPointerException quand je ré-appelle la méthode lanceChrono pour interrompre. La NPE est sur:
Code :
- chrono.interrupt ( ) ;
|
pourtant chrono est bien déclaré globale à la classe. Je ne comprends pas pourquoi il disparaît
Code :
- public class Jeu {
- private Chronometre chrono ;
- ...
|
---------------
Du taf dans le Logiciel Libre : https://www.linuxjobs.fr