Я читаю книгу под названием «Параллелизм Java на практике», и в первой главе следующий код демонстрируется как небезопасный поток
public class UnsafeSequence {
private int value;
/** Returns a unique value. */
public int getNext() {
return value++;
}
}
Так что, если два потока запускают этот код, мы можем получить нежелательные результатыпотому что они будут меняться на разных этапах, таких как чтение, изменение и запись значения.Это определяется только ОС, или потоки переключаются между собой, например, по разным «командам байт-кода»?Есть ли способ узнать все возможные места, где потоки могут переключаться с одного на другой, не только для этого кода, но и вообще?