public static void main(String[] args){
new Thread(new Runnable() {
@Override
public void run() {
for (int i=0; i<10; i++){
System.out.print(i+" ");
}
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
for (int i=0; i<10; i++){
System.out.print(i+" ");
}
}
}).start();
}
输出结果如下:
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
1. Pour contrôler l'ordre des verrous de thread afin de rester cohérent, vous pouvez utiliser les verrous flexibles du package java.util.concurrent.locks
2. Utilisez les classes atomiques de java.util.concurrent.atomic forfait
L'exécution du CPU est trop rapide. Le premier thread a fini de s'exécuter rapidement. Le deuxième thread n'a peut-être pas encore été créé. Essayez de changer la valeur de la boucle à 1000. Vous devriez pouvoir voir l'effet, mais il. ne fonctionnera certainement pas. Ce sera intersectionnel et déroutant
Les tâches d'exécution du CPU sont exécutées dans le désordre et la synchronisation entre plusieurs threads n'est pas garantie. Si vous souhaitez garantir l'ordre, un contrôle de synchronisation est requis
.