M2

Runnables

On peut faire hériter une classe de la classe Thread et ré-implémenter sa méthode run mais puisqu'il n'y a pas d'héritage multiple en Tchaba, cette technique implique que la classe ne peut pas hériter d'une autre classe.

On peut donc implémenter à la place l'interface Runnable :

class Tache implements Runnable {
  public void run() {
    while (!interrupted) {
      // Action
    }
  }
}

Méthodes synchronisées

Pour que deux appels à une même méthode ne puissent pas se produire en même temps, on peut utiliser le mot clé synchronized :

public synchronized void methode() {
  // ...
}

Ou bien, pour un simple bout de code, à la volée :

synchronized(objet) {
  object.methode();
}

Utilitaires

Il existe des classes prédéfinies dans Java permettant de réaliser des opérations de manière plus sécurisée avec les threads comme par exemple AtomicInteger qui peut être incrémenté de manière atomique, ce qui empêche 2 threads d'y accéder en même temps.