web-dev-qa-db-fra.com

Dans une explication simple à comprendre, qu'est-ce que Runnable en Java?

Qu'est-ce qui est "runnable" en Java, en termes simples? Je suis un étudiant en programmation AP au lycée, qui a pour mission de faire de la recherche ou de chercher auprès d’autres ce qu’est "runnable" (nous commençons à peine à la POO et nous n’avons pas encore touché à un fil de discussion).

83
user1809295

Un Runnable est fondamentalement un type de classe (Runnable est une interface) qui peut être placé dans un thread, décrivant ce que le thread est censé faire.

Le Runnable Interface demande à la classe d'implémenter la méthode run() comme ceci:

public class MyRunnableTask implements Runnable {
     public void run() {
         // do stuff here
     }
}

Et puis utilisez-le comme ceci:

Thread t = new Thread(new MyRunnableTask());
t.start();

Si vous n'aviez pas l'interface Runnable, la classe Thread, chargée d'exécuter vos fichiers dans l'autre thread, n'aurait pas la promesse de trouver une méthode run() dans votre classe, afin que vous puissiez obtenir des erreurs. C'est pourquoi vous devez implémenter l'interface.

Avancé: Type anonyme

Notez qu'il n'est pas nécessaire de définir une classe comme d'habitude, vous pouvez faire tout cela en ligne:

Thread t = new Thread(new Runnable() {
    public void run() {
        // stuff here
    }
});
t.start();

Ceci est similaire à ce qui précède, sauf que vous ne créez pas une autre classe nommée.

165
opatut

Runnable est une interface définie comme suit:

interface Runnable {
    public void run();
}

Pour créer une classe qui l'utilise, définissez-la simplement comme suit: (public) class MyRunnable implements Runnable {

Il peut être utilisé sans même créer un nouveau fil. C'est essentiellement votre interface de base avec une seule méthode, run, que l'on peut appeler.

Si vous créez un nouveau thread avec runnable en tant que paramètre, la méthode run sera appelée dans un nouveau thread.

Il convient également de noter que les threads implémentent Runnable, et que cela est appelé lorsque le nouveau thread est créé (dans le nouveau thread). L'implémentation par défaut appelle tout ce que Runnable vous avez donné au constructeur, c'est pourquoi vous pouvez simplement faire new Thread(someRunnable) sans redéfinir la méthode run de Thread.

8
Alex Coleman