Я пытаюсь понять, что было бы лучшим способом исправить эту проблему с параллельным параллелизмом с помощью такого кода. Я попытался добавить блокировку вокруг «index ++», но есть ли лучший способ достижения параллелизма?Синхронизация с вложенным классом, но с глобальной переменной? (JAVA)
public class MainClass {
public static short index = 0;
public static void main(String[] args) {
MainClass testConc = new MainClass();
Thread thr1 = new Thread(testConc.new MyRunnable());
thr1.start();
Thread thr2 = new Thread(testConc.new MyRunnable());
thr2.start();
}
class MyRunnable implements Runnable {
private static final Object lock = new Object();
public void run() {
while (index < 99) {
System.out.println(index);
synchronized(lock) {
index++;
}
}
}
}
}
Как параллелизм «сломан»? Что вы ожидаете от вывода и что получаете? –
@jas это статическое поле, так что это общий замок – Zielu
@jas, объект блокировки является 'static', что означает, что он делится между всеми экземплярами. –