public void acquire(Context context, String name, long timeout, Handler<AsyncResult<Lock>> handler) { LockWaiter lockWaiter = new LockWaiter(context, name, timeout, handler); List<LockWaiter> waiters = waitersMap.compute(name, (s, list) -> { List<LockWaiter> result; if (list != null) { result = new ArrayList<>(list.size() + 1); result.addAll(list); } else { result = new ArrayList<>(1); } result.add(lockWaiter); return result; }); if (waiters.size() == 1) { waiters.get(0).acquireLock(); } }
public void acquire(Context context, String name, long timeout, Handler<AsyncResult<Lock>> handler) { LockWaiter lockWaiter = new LockWaiter(context, name, timeout, handler); List<LockWaiter> waiters = waitersMap.compute(name, (s, list) -> { List<LockWaiter> result; if (list != null) { result = new ArrayList<>(list.size() + 1); result.addAll(list); } else { result = new ArrayList<>(1); } result.add(lockWaiter); return result; }); if (waiters.size() == 1) { waiters.get(0).acquireLock(); } }
private void nextWaiter(String lockName) { List<LockWaiter> waiters = waitersMap.compute(lockName, (s, list) -> { return list == null || list.size() == 1 ? null : new ArrayList<>(list.subList(1, list.size())); }); if (waiters != null) { waiters.get(0).acquireLock(); } } }
LockWaiter(Context context, String lockName, long timeout, Handler<AsyncResult<Lock>> handler) { this.context = context; this.lockName = lockName; this.handler = handler; status = new AtomicReference<>(Status.WAITING); timerId = timeout != Long.MAX_VALUE ? context.owner().setTimer(timeout, tid -> timeout()) : null; }
private void nextWaiter(String lockName) { List<LockWaiter> waiters = waitersMap.compute(lockName, (s, list) -> { return list == null || list.size() == 1 ? null : new ArrayList<>(list.subList(1, list.size())); }); if (waiters != null) { waiters.get(0).acquireLock(); } } }
LockWaiter(Context context, String lockName, long timeout, Handler<AsyncResult<Lock>> handler) { this.context = context; this.lockName = lockName; this.handler = handler; status = new AtomicReference<>(Status.WAITING); timerId = timeout != Long.MAX_VALUE ? context.owner().setTimer(timeout, tid -> timeout()) : null; }