powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Java [игнор отключен] [закрыт для гостей] / понимание StampedLock
2 сообщений из 2, страница 1 из 1
понимание StampedLock
    #39804216
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В жавадоке вот такой вот код написан:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
class Point {
  private double x, y;
  private final StampedLock sl = new StampedLock();
  // a read-only method
  // upgrade from optimistic read to read lock
  double distanceFromOrigin() {
    long stamp = sl.tryOptimisticRead();
    try {
      retryHoldingLock: for (;; stamp = sl.readLock()) {
        if (stamp == 0L)
          continue retryHoldingLock;
        // possibly racy reads
        double currentX = x;
        double currentY = y;
        if (!sl.validate(stamp))
          continue retryHoldingLock;
        return Math.hypot(currentX, currentY);
      }
    } finally {
      if (StampedLock.isReadLockStamp(stamp))
        sl.unlockRead(stamp);
    }
  }
}



В чем логика примера? почему сначала пытаемся взять оптимистический лок, а если не получилось, то обычный?

Для каких кейсов это ускорит код?
...
Рейтинг: 0 / 0
понимание StampedLock
    #39804314
just_vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerДля каких кейсов это ускорит код?
Когда в подавляющем количестве случаев никто нужные вам значения не меняет и можно на этом с экономить (как правило когда читающих значительно больше чем меняющих)
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / понимание StampedLock
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]