Код: Выделить всё
public class StopThread {
private static boolean stopRequested;
public static void main(String[] args) throws InterruptedException {
Thread backgroundThread = new Thread(() -> {
int i = 0;
while (!stopRequested) {
i++;
}
});
backgroundThread.start();
TimeUnit.SECONDS.sleep(1);
stopRequested = true;
}
}
При отсутствии синхронизации это приемлемо для
виртуальная машина для преобразования кода:
Код: Выделить всё
while (!stopRequested)
i++;
Код: Выделить всё
if (!stopRequested)
while (true)
i++;
Подробнее здесь: https://stackoverflow.com/questions/785 ... tion-legal