Для этого кода цифры печатаются от 1 до 10 для резьбы t1
, а затем для резьбы t2
.Почему я получаю разные выходные данные для приведенных ниже программ?
class Synchtest {
public static void main(String args[]) {
synchtest2 a = new synchtest2();
Thread t1 = new Thread(a);
Thread t2 = new Thread(a);
t1.start();
t2.start();
}
}
class synchtest2 extends Thread {
public synchronized void run() {
for (int i = 0; i <= 10; i++) {
System.out.println(i);
try {
sleep(1000);
} catch (Exception e) {
}
}
}
}
, но для нижеследующего кода они напечатаны как 00 11 22 33 44 55 и так далее.
class Synchtest {
public static void main(String args[]) {
synchtest2 t = new synchtest2();
synchtest2 t2 = new synchtest2();
t.start();
t2.start();
}
}
class synchtest2 extends Thread {
public synchronized void run() {
for (int i = 0; i <= 10; i++) {
System.out.println(i);
try {
sleep(1000);
} catch (Exception e) {
}
}
}
}