En exécutant mon code de test ci-dessous, il apparaît que l'appel d'une méthode d'un thread pendant qu'il est encore en cours d'exécution exécute la méthode entre l'exécution actuelle du thread. Ce que je me demande, c'est ce qui se passe exactement.
Le thread met-il en pause la boucle while, exécute-t-il la méthode, puis revient-il à la boucle ? Le fait-il à la fin du code while ou n'importe où entre les deux ?
Ou bien la méthode s'exécute-t-elle dans un autre thread séparé ? Ou quelque chose de tout à fait différent ?
package test;
public class main {
public static threed thred = new threed();
public static void main(String[] args) throws InterruptedException {
thred.start();
Thread.sleep(10000);
while (true) {
System.out.println("doing it");
thred.other();
Thread.sleep(2000);
thred.x++;
}
}
}
et
package test;
public class threed extends Thread {
public int x;
public threed() {
x = 0;
}
public void run() {
while (x < 10) {
System.out.println(x);
}
}
public void other() {
System.out.println("other " + x);
}
}