65 votes

Comment démarrer une classe de thread anonyme

J'ai l'extrait de code suivant :

 public class A {
    public static void main(String[] arg) {
        new Thread() {
            public void run() {
                System.out.println("blah");
            }
        };
    }
}

Ici, comment appeler la start() pour le thread sans créer d'instance de la classe de thread ?

150voto

Jon Skeet Points 692016

Vous êtes déjà en train de créer une instance de la classe Thread - vous ne faites rien avec. Vous pouvez appeler start() sans même utiliser de variable locale :

 new Thread()
{
    public void run() {
        System.out.println("blah");
    }
}.start();

... mais personnellement, je l'affecterais normalement à une variable locale, faire tout ce que vous voulez (par exemple, définir le nom, etc.), puis le démarrer :

 Thread t = new Thread() {
    public void run() {
        System.out.println("blah");
    }
};
t.start();

4voto

Jeremiah Orr Points 1556

Appelez simplement start()

 new Thread()
{
    public void run() {
        System.out.println("blah");
    }
}.start();

3voto

Dave Costa Points 25282

L' new est une référence d'objet, donc des méthodes peuvent être invoquées dessus :

 public class A {
    public static void main(String[] arg)
    {
        new Thread()
        {
            public void run() {
                System.out.println("blah");
            }
        }.start();
    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X