Использовать таймаут соединения - если долго то забивать на клиента. Или NIO - там можно обрабатывать соединение без блокировок (и как бонус можно заводить один поток на несколько клиентов).
В вашем примере кроме race condition (который вы ищете), присутствует еще и data race. При наличии data race компилятор (и не только) волен делать че угодно. Например заменить весь цикл на count = 1_000_000_000; Это не сломает intra-thread семантики. Если же поставить volatile на count то data race пропадает и остается только race condition. Тогда такие оптимизации запрещены и придется четсно выполнять что написано. Тогда можно получить любое значение из [2; 2_000_000_000].
Возможно както так. Весьма вероятно что я ошибаюсь.
Ответ написан
Комментировать
Комментировать
Оценили как «Нравится»
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.