Conversation
| } | ||
|
|
||
| public long getLastValue() { | ||
| return lastValue; |
There was a problem hiding this comment.
одного synchronized не достаточно.
Тут он тоже нужен.
There was a problem hiding this comment.
как реализуется требование ДЗ ?
Число, полученное от сервера должно учитываться только один раз.
There was a problem hiding this comment.
++
- по synchronized упустил, добавил сюда тоже
- про реализацию требования: реализовано в NumsClient через
lastServerValueв методеcalculateNextValueпроверка что одинаковое значение не использовать повторно
Если точнее - https://github.com/manfe513/java-otus/pull/15/files#diff-e3224650e63e135729d99535f01823245d730cd579fdd3aaf32b30305bb4bcd8R44
Вот на примере выдачи:
There was a problem hiding this comment.
не вижу в коде добавленный synchnonized
There was a problem hiding this comment.
не запушилось по-видимому не углядел
сейчас убрал, сделал по совету с AtomicLong
| } | ||
|
|
||
| public long getLastValue() { | ||
| return lastValue; |
There was a problem hiding this comment.
не вижу в коде добавленный synchnonized
|
|
||
| long nextVal = currentValue; | ||
|
|
||
| if (serverValue != lastServerValue && serverValue > 0) { |
There was a problem hiding this comment.
это условие
serverValue > 0
кажется тут лишним.
|
|
||
| long nextVal = currentValue; | ||
|
|
||
| if (serverValue != lastServerValue && serverValue > 0) { |
There was a problem hiding this comment.
сравнивать значение с предыдущим не очень надежно.
Т.к. значение может задвоиться и его пропустите.
Надежнее и проще использовать AtomicLong.getAndSet(0)
тогда и synchronized будет не нужен и логика заметно упростится.
There was a problem hiding this comment.
++
ого, благодарю, не подумал так даже
There was a problem hiding this comment.
убрал synchronized
сделал с AtomicLong
| long serverValue = streamObserver.getLastValue(); | ||
| logger.info("serverValue: {}", currentValue); | ||
|
|
||
| long previousServerValue = lastServerValue.getAndSet(serverValue); |
There was a problem hiding this comment.
тут проще можно:
currentValue + lastServerValue.getAndSet(0) + 1;
No description provided.