Qu'est-ce que "runnable" en Java, en termes simples ? Je suis un étudiant en programmation AP au lycée, dont le devoir est de faire des recherches, ou de demander aux autres ce qu'est "runnable" (nous commençons juste à aborder la POO, et n'avons pas encore touché aux threads).
Réponses
Trop de publicités?Un Runnable est essentiellement un type de classe (Runnable est une interface) qui peut être placé dans un thread, décrivant ce que le thread est censé faire.
El Interface exécutable requiert de la classe qu'elle implémente la méthode run()
comme ça :
public class MyRunnableTask implements Runnable {
public void run() {
// do stuff here
}
}
Et ensuite l'utiliser comme ça :
Thread t = new Thread(new MyRunnableTask());
t.start();
Si vous n'avez pas eu le Runnable
la classe Thread, qui est responsable de l'exécution de votre travail dans l'autre thread, n'aurait pas la promesse de trouver une interface run()
dans votre classe, ce qui pourrait entraîner des erreurs. C'est pourquoi vous devez implémenter l'interface.
Avancé : Type anonyme
Notez que vous n'avez pas besoin 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();
Cette méthode est similaire à la précédente, sauf que vous ne créez pas une autre classe nommée.
Runnable
est une interface définie comme telle :
interface Runnable {
public void run();
}
Pour créer une classe qui l'utilise, il suffit de définir la classe en tant que (public) class MyRunnable implements Runnable {
Il peut être utilisé sans même créer un nouveau fil. Il s'agit essentiellement de l'interface de base avec une seule méthode, run, qui peut être appelée.
Si vous créez un nouveau Thread avec runnable comme paramètre, il appellera la méthode run dans un nouveau Thread.
Il convient également de noter que les Threads mettent en oeuvre Runnable
et qui est appelé lorsque le nouveau fil est créé (dans le nouveau fil). L'implémentation par défaut appelle simplement n'importe quel Runnable que vous avez fourni dans le constructeur, ce qui explique pourquoi vous pouvez juste faire new Thread(someRunnable)
sans remplacer la fonction run
méthode.