Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1054 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  classe anonyme et création de thread à la volée

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

classe anonyme et création de thread à la volée

n°199942
bobuse
Posté le 22-08-2002 à 16:01:16  profilanswer
 

vouala
 

Code :
  1. public class titi {
  2.    // ...
  3.    public void f() {
  4.       new Thread() {
  5.          // [marche po]
  6.          public Thread() (
  7.               super("monThread" );
  8.               start();
  9.          }
  10.          // [/marche po]
  11.          public void run() {
  12.               fonctionCouteuse();
  13.          }
  14.       }
  15.    }

 
 
Bon alors 2 choses :
 * Soit vous trouvez ça super crade, et vous me proposez autre chose (ou vous me laissez pleurer)
 * Soit vous avez une idée de pourquoi ça me sort :
 
invalid method declaration; return type required
            public Thread() {
                   ^
 
Merci


Message édité par bobuse le 22-08-2002 à 16:18:31
mood
Publicité
Posté le 22-08-2002 à 16:01:16  profilanswer
 

n°199947
El_gringo
Posté le 22-08-2002 à 16:04:08  profilanswer
 

...et public void Thread c pas mieux !? :D

n°199948
bobuse
Posté le 22-08-2002 à 16:05:01  profilanswer
 

El_Gringo a écrit a écrit :

...et public void Thread c pas mieux !? :D




Ben void pour un constructeur, ci pas top  ;)

n°199950
benou
Posté le 22-08-2002 à 16:06:05  profilanswer
 

Thinking in java c'est bien :
 

Code :
  1. public class Parcel9 {
  2.   public Destination
  3.   dest(final String dest, final float price) {
  4.     return new Destination() {
  5.       private int cost;
  6.       // Initialisation d'instance pour chaque objet :
  7.       {
  8.         cost = Math.round(price);
  9.         if(cost > 100)
  10.           System.out.println("Over budget!" );
  11.       }      private String label = dest;
  12.       public String readLabel() { return label; }
  13.     };
  14.   }
  15.   public static void main(String[] args) {
  16.     Parcel9 p = new Parcel9();
  17.     Destination d = p.dest("Tanzania", 101.395F);
  18.   }
  19. } ///:~

n°199951
benou
Posté le 22-08-2002 à 16:06:53  profilanswer
 

le bloc que j'ai mit en rouge sert de constructeur.
par contre, si tu veux mettre des paramètres à ce constructeur, là je sais pas ...

n°199953
bobuse
Posté le 22-08-2002 à 16:08:23  profilanswer
 

mirci bocoup. Maintenant ça me revient ! Je l'avais lu quelque part, mais je savais plus où, et c'est pour ça que j'ai demandé :D  
Merci.
 
Et sinon, au niveau "propreté", ça va, où je me plante ?
 
Il me semble que pour créer un petit thread c'est justifié ...

n°199957
bobuse
Posté le 22-08-2002 à 16:10:05  profilanswer
 

benou a écrit a écrit :

le bloc que j'ai mit en rouge sert de constructeur.
par contre, si tu veux mettre des paramètres à ce constructeur, là je sais pas ...




Arggh
 

Code :
  1. {
  2.                 super("initialisation de la partie" );
  3.                 start();
  4.             }

 
 

Citation :

call to super must be first statement in constructor
                super("initialisation de la partie" );
                     ^

n°199958
benou
Posté le 22-08-2002 à 16:10:11  profilanswer
 

bobuse a écrit a écrit :

 
Et sinon, au niveau "propreté", ça va, où je me plante ?
 
Il me semble que pour créer un petit thread c'est justifié ...




niveau propreté, c'est dégeulasse ! ;)
 
tu ferais miex de créer une class (interne si tu as besoin) qui implémente runable. ensuite tu passes cette classe en paramètre du constructeur de la class Thread et tu fais un start dessus.
 
regarde la javadoc de Thread et de Runable ...

n°199962
benou
Posté le 22-08-2002 à 16:12:07  profilanswer
 

bobuse a écrit a écrit :

 
Arggh

Citation :

call to super must be first statement in constructor
                super("initialisation de la partie" );
                     ^

 




 

Code :
  1. public class titi {
  2.       // ...  
  3.        public void f() {
  4.             new Thread("monThread" ) {
  5.                {
  6.                       start();
  7.                }
  8.                public void run() {
  9.                       fonctionCouteuse();
  10.                }
  11.           }
  12.      }

n°199963
bobuse
Posté le 22-08-2002 à 16:12:18  profilanswer
 

benou a écrit a écrit :

 
niveau propreté, c'est dégeulasse ! ;)
 
tu ferais miex de créer une class (interne si tu as besoin) qui implémente runable. ensuite tu passes cette classe en paramètre du constructeur de la class Thread et tu fais un start dessus.
 
regarde la javadoc de Thread et de Runable ...  




Ha bon ?
Je sais comment fonctionne Thread et Runnable (merci kan même).
Mais bon, c'est plus lisible comme ça et ça revient au même, en plus je vais l'utiliser q'une fois ce thread

mood
Publicité
Posté le 22-08-2002 à 16:12:18  profilanswer
 

n°199967
bobuse
Posté le 22-08-2002 à 16:13:45  profilanswer
 

benou a écrit a écrit :

 
 

Code :
  1. public class titi {
  2.       // ...  
  3.        public void f() {
  4.             new Thread("monThread" ) {
  5.                {
  6.                       start();
  7.                }
  8.                public void run() {
  9.                       fonctionCouteuse();
  10.                }
  11.           }
  12.      }





[:nowad]
 
c bon!  ça marche capitaine, ça marche !


Message édité par bobuse le 22-08-2002 à 16:14:59
n°199969
benou
Posté le 22-08-2002 à 16:13:49  profilanswer
 

a la rigueur, fait plutot ca :  
 

Code :
  1. public void f() {
  2.      new Thread("monThread" ) {
  3.         public void run() { fonctionCouteuse(); }
  4.      }.start();
  5.   }

n°199971
benou
Posté le 22-08-2002 à 16:14:15  profilanswer
 

bobuse a écrit a écrit :

[:nowad]




ca marche pas ?


Message édité par benou le 22-08-2002 à 16:14:26
n°199973
bobuse
Posté le 22-08-2002 à 16:16:58  profilanswer
 

benou a écrit a écrit :

 
ca marche pas ?




Si ça marche

benou a écrit a écrit :

a la rigueur, fait plutot ca :

Code :
  1. public void f() {
  2.      new Thread("monThread" ) {
  3.         public void run() { fonctionCouteuse(); }
  4.      }.start();
  5.   }






Ha ouais sympa !

n°199974
darklord
You're welcome
Posté le 22-08-2002 à 16:17:17  profilanswer
 

El_Gringo a écrit a écrit :

...et public void Thread c pas mieux !? :D




 
 :heink:  
 
 
 :lol:

n°199976
benou
Posté le 22-08-2002 à 16:17:40  profilanswer
 

je viens de tester et ca ca marche :
 

Code :
  1. public class TestThread {
  2.    public static void main (String[] args) {
  3.          new Thread("monThread" ) { 
  4.             { start(); }
  5.             public void run() { System.out.println("coucou" ); } 
  6.          };
  7.     }
  8. }


 
mais je préfère cette version :  

Code :
  1. public class TestThread {
  2.    public static void main (String[] args) {
  3.          new Thread("monThread" ) { 
  4.               public void run() { System.out.println("coucou" ); } 
  5.          }.start(); 
  6.     }
  7. }


Message édité par benou le 22-08-2002 à 16:18:24
n°199980
benou
Posté le 22-08-2002 à 16:18:55  profilanswer
 

sinon, c'est quoi l'intéret de commer ton thread ?

n°199984
bobuse
Posté le 22-08-2002 à 16:20:00  profilanswer
 

benou a écrit a écrit :

je viens de tester et ca ca marche :
 

Code :
  1. public class TestThread {
  2.    public static void main (String[] args) {
  3.          new Thread("monThread" ) { 
  4.             { start(); }
  5.             public void run() { System.out.println("coucou" ); } 
  6.          };
  7.     }
  8. }


 
mais je préfère cette version :  

Code :
  1. public class TestThread {
  2.    public static void main (String[] args) {
  3.          new Thread("monThread" ) { 
  4.               public void run() { System.out.println("coucou" ); } 
  5.          }.start(); 
  6.     }
  7. }






Je confirme!
J'adopte la deuxième, et je vais en foutre partout  :D  :D  :D  
 ;)

n°199986
bobuse
Posté le 22-08-2002 à 16:20:36  profilanswer
 

benou a écrit a écrit :

sinon, c'est quoi l'intéret de commer ton thread ?




Bin, pour le debuggage ...

n°199987
BifaceMcLe​OD
The HighGlandeur
Posté le 22-08-2002 à 16:21:31  profilanswer
 

bobuse a écrit a écrit :

 
Ha bon ?
Je sais comment fonctionne Thread et Runnable (merci kan même).
Mais bon, c'est plus lisible comme ça et ça revient au même, en plus je vais l'utiliser q'une fois ce thread




Ben non justement, c'est pas plus lisible.  :sarcastic:  
 
En général, dans ces cas là, moi, je fais une inner class privée non anonyme (si possible statique). La seule différence avec une classe anonyme, c'est juste qu'elle a un nom (ça documente un peu plus...), et pour le compilo ou la machine virtuelle, ça ne change absolument rien d'autre. Et si elle doit grandir, ben... elle est déjà prête.
 
Au passage, si tu rends ton inner classe statique, la création de l'objet est un poil plus légère aussi.

n°199991
benou
Posté le 22-08-2002 à 16:21:49  profilanswer
 

qu'est ce que ca t'apporte pour le débugage ?

n°199993
--greg--
Posté le 22-08-2002 à 16:25:05  profilanswer
 

[:blueflag]

n°199998
bobuse
Posté le 22-08-2002 à 16:27:54  profilanswer
 

benou a écrit a écrit :

qu'est ce que ca t'apporte pour le débugage ?




bin pour suspendre des threads ... ou pour les suivre ... je sais pas trop, mais je préfère les nommer, comme ça si j'en ai besoin, c'est prêt ...

n°200013
benou
Posté le 22-08-2002 à 16:45:15  profilanswer
 

bobuse a écrit a écrit :

 
bin pour suspendre des threads ... ou pour les suivre ... je sais pas trop, mais je préfère les nommer, comme ça si j'en ai besoin, c'est prêt ...




ouais d'accord :sarcastic:  
 
 
 
:D ;)

n°200015
BifaceMcLe​OD
The HighGlandeur
Posté le 22-08-2002 à 16:47:25  profilanswer
 

Encore mieux :

Code :
  1. public class TestThread {
  2.   public static void main(String[] args) {
  3.     Thread  myThread = new Thread("monThread" ) { 
  4.           public void run() {
  5.             System.out.println("coucou" );
  6.           }
  7.         };
  8.     myThread.start();
  9.   }
  10. }


n°200016
benou
Posté le 22-08-2002 à 16:49:39  profilanswer
 

bha ouais mais moi j'aime bien éviter de déclarer les variables quand je peux. la c'est typiquement le ca ...  
 
new Truc.machin() ca rulez ! ;)

n°200017
bobuse
Posté le 22-08-2002 à 16:50:17  profilanswer
 

BifaceMcLeOD a écrit a écrit :

Encore mieux :

Code :
  1. public class TestThread {
  2.   public static void main(String[] args) {
  3.     Thread  myThread = new Thread("monThread" ) { 
  4.           public void run() {
  5.             System.out.println("coucou" );
  6.           }
  7.         };
  8.     myThread.start();
  9.   }
  10. }





 
tsst tsst, ça fait deux instructions là !
 :p


Message édité par bobuse le 22-08-2002 à 16:51:00
n°200019
BifaceMcLe​OD
The HighGlandeur
Posté le 22-08-2002 à 16:51:43  profilanswer
 

benou a écrit a écrit :

bha ouais mais moi j'aime bien éviter de déclarer les variables quand je peux. la c'est typiquement le ca ...  
 
new Truc.machin() ca rulez ! ;)




Moi aussi, j'aime faire ça... sauf quand la classe est anonyme ! Parce que l'appel à la méthode machin() passe complètement inaperçu, du coup !
Il y a des moments où la compacité du code a ses limites....  :sarcastic:


Message édité par BifaceMcLeOD le 22-08-2002 à 16:52:16
n°200048
benou
Posté le 22-08-2002 à 17:38:46  profilanswer
 

BifaceMcLeOD a écrit a écrit :

 
Moi aussi, j'aime faire ça... sauf quand la classe est anonyme ! Parce que l'appel à la méthode machin() passe complètement inaperçu, du coup !
Il y a des moments où la compacité du code a ses limites....  :sarcastic:  




bha dans ce cas là ca va : c'est bien indenté, donc on voit.
et puis d etoute façon un Thread anonyme, ca sert à rien d'autre que d'être lancé totu de suite ! ;)

n°200329
bobuse
Posté le 23-08-2002 à 09:17:16  profilanswer
 

Pour la petite histoire, je l'ai des-anonymisée ma classe ! :lol:  :D  ;)

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  classe anonyme et création de thread à la volée

 

Sujets relatifs
Multi threadCrypter un password dans une classe
[PHP][Javascript]inscription online et creation de la liste des inscri[Java]classe abstraite pour un projet Bookmarks
[VC++]PB de threadCréation de fenêtres MDI
[C++] Killer un thread, mais pas comme un gros cochon :oclasse d'un objet
Création et Distribution d'un logicielCréation de repertoire ? petit probleme !personne ne sait ?
Plus de sujets relatifs à : classe anonyme et création de thread à la volée


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR