Синхронизировать свежие чтения и барьер памяти - PullRequest
0 голосов
/ 13 октября 2018

Я прочитал следующую статью http://javaexp.blogspot.com/2007/12/difference-between-volatile-and.html и понимаю, что:

Фактически синхронизируется синхронизация всей памяти потока с «основной» памятью.

У меня есть сомнения, если у меня есть следующее:

public class A {
int count;

    public synchronized int methodA() {
        return count++;
    }

   public int methodB() {
        return count++;
    }
}

поток в methodA всегда читает последнее значение для count?или это не гарантируется, потому что methodB не синхронизирован?

1 Ответ

0 голосов
/ 13 октября 2018

Поток может получить неправильные значения cout ++, так как это неправильный способ многопоточного программирования.

Рассмотрим сценарий, в котором Thread_1 и Thread_2 оба вызывают methodB одновременно и получают значение 5, скажем, и оба затем увеличивают значение, так что на самом деле значение должно быть 7, но теперь значения, которые другой thread3 получит значение6 из-за неправильного мультитрейдинга.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...