Этот код должен выдавать четные и неровные выходные данные, потому что не синхронизируется ни с какими методами.Тем не менее, выход на моей JVM всегда четный.Я действительно запутался, поскольку этот пример исходит прямо из Дуга Ли.
public class TestMethod implements Runnable {
private int index = 0;
public void testThisMethod() {
index++;
index++;
System.out.println(Thread.currentThread().toString() + " "
+ index );
}
public void run() {
while(true) {
this.testThisMethod();
}
}
public static void main(String args[]) {
int i = 0;
TestMethod method = new TestMethod();
while(i < 20) {
new Thread(method).start();
i++;
}
}
}
Вывод
Тема [Тема 8,5, главная] 135134
Тема [Тема-8,5, основная] 135136
Тема [Тема-8,5, основная] 135138
Тема [Тема-8,5, основная] 135140
Тема [Нить-8,5, основная] 135142
Нить [Нить-8,5, основная] 135144