28 juillet 2004

Les threads en java

Définition d'un thread :
Un thread n'est pas un processus, c'est une tâche. En effet, les threads se partagent la mémoire. Ils ne s'exécutent pas réellement en parallèle (sauf dans le cas où il y a plusieurs processeurs) mais ils se partagent le temps d'exécution.

Cas d'utilisation :
- les programmes avec une interface graphique, ils ont un thread séparé pour le traitement.
- les horloges, les alarmes utilisent des threads
- les programmes en interaction avec l'utilisateur, il est nécessaire dans ce cas de rendre les entrées/sorties non bloquantes

Cycle de vie d'un thread
Un thread a quatre états différents qui définissent son cycle de vie : état nouveau, état exécutable, état en attente, état mort.
Etat nouveau
: le thread prend cet état après son instanciation avec l'opérateur new.
Etat exécutable
: le thread prend cet état quand il est lancé par la méthode start()
Etat en attente
: il n'exécute aucun traitement et il ne consomme aucune ressource, il est bloqué et ce pour diverses raisons, par exemple après appel de la méthode sleep ou de la méthode wait.
Etat mort
: le thread prend cet état quand il est sorti de la méthode run()

Méthodes :
Interface Runnable

Méthode run mise à notre disposition par l'interface Runnable, cette méthode ne prend aucun paramètre en entrée et ne renvoie aucune valeur :
class MonThread implements Runnable{
public
void run(){  //mettre le code }
}

Classe Thread
Notre classe doit être dérivée de la classe Thread.

public class MonThread extends Thread {
public void run() { // mettre du code }}

Le code à exécuter doit être placé dans la méthode run() vue précédemment. L'exécution de ce tread se fait en appelant la méthode start(). Documentation détaillée sur la classe Thread

Notions avancées

  • Synchronisation des threads, elle est indispensable lorsque les threads accèdent à des données partagées, cela permet l'intégrité des données. Il faut ainsi utiliser le mot clé synchronized. Il existe deux types de verrouillages ou moniteurs qui garantissent l'intégrité des objets : les moniteurs d'objet et les monieteurs de classe.

Pour en savoir plus :

Posté par fatihaelh à 13:28 - JAVA - Commentaires [0] - Permalien [#]

Commentaires

Poster un commentaire