java.util.concurrent.LinkedBlockingDeque.remainingCapacity()方法的使用及代码示例

x33g5p2x  于2022-01-23 转载在 其他  
字(8.5k)|赞(0)|评价(0)|浏览(115)

本文整理了Java中java.util.concurrent.LinkedBlockingDeque.remainingCapacity()方法的一些代码示例,展示了LinkedBlockingDeque.remainingCapacity()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。LinkedBlockingDeque.remainingCapacity()方法的具体详情如下:
包路径:java.util.concurrent.LinkedBlockingDeque
类名称:LinkedBlockingDeque
方法名:remainingCapacity

LinkedBlockingDeque.remainingCapacity介绍

[英]Returns the number of additional elements that this deque can ideally (in the absence of memory or resource constraints) accept without blocking. This is always equal to the initial capacity of this deque less the current size of this deque.

Note that you cannot always tell if an attempt to insert an element will succeed by inspecting remainingCapacitybecause it may be the case that another thread is about to insert or remove an element.
[中]返回此deque理想情况下(在没有内存或资源约束的情况下)可以接受而不阻塞的附加元素数。这始终等于此设备的初始容量减去此设备的当前大小。
请注意,您不能总是通过检查RemainingCapacity来判断插入元素的尝试是否成功,因为可能是另一个线程即将插入或删除元素。

代码示例

代码示例来源:origin: loklak/loklak_server

public static boolean addSchedulerAvailable() {
  return messageQueue.remainingCapacity() > 0;
}

代码示例来源:origin: apache/flume

private void resizeQueue(int capacity) throws InterruptedException {
 int oldCapacity;
 synchronized (queueLock) {
  oldCapacity = queue.size() + queue.remainingCapacity();
 }
 if (oldCapacity == capacity) {
  return;
 } else if (oldCapacity > capacity) {
  if (!queueRemaining.tryAcquire(oldCapacity - capacity, keepAlive, TimeUnit.SECONDS)) {
   LOGGER.warn("Couldn't acquire permits to downsize the queue, resizing has been aborted");
  } else {
   synchronized (queueLock) {
    LinkedBlockingDeque<Event> newQueue = new LinkedBlockingDeque<Event>(capacity);
    newQueue.addAll(queue);
    queue = newQueue;
   }
  }
 } else {
  synchronized (queueLock) {
   LinkedBlockingDeque<Event> newQueue = new LinkedBlockingDeque<Event>(capacity);
   newQueue.addAll(queue);
   queue = newQueue;
  }
  queueRemaining.release(capacity - oldCapacity);
 }
}

代码示例来源:origin: apache/flume

@Override
protected Event doTake() throws InterruptedException {
 channelCounter.incrementEventTakeAttemptCount();
 if (takeList.remainingCapacity() == 0) {
  throw new ChannelException("Take list for MemoryTransaction, capacity " +
    takeList.size() + " full, consider committing more frequently, " +
    "increasing capacity, or increasing thread count");
 }
 if (!queueStored.tryAcquire(keepAlive, TimeUnit.SECONDS)) {
  return null;
 }
 Event event;
 synchronized (queueLock) {
  event = queue.poll();
 }
 Preconditions.checkNotNull(event, "Queue.poll returned NULL despite semaphore " +
   "signalling existence of entry");
 takeList.put(event);
 int eventByteSize = (int) Math.ceil(estimateEventSize(event) / byteCapacitySlotSize);
 takeByteCounter += eventByteSize;
 return event;
}

代码示例来源:origin: google/guava

public void testNewLinkedBlockingDequeCapacity() {
 try {
  Queues.newLinkedBlockingDeque(0);
  fail("Should have thrown IllegalArgumentException");
 } catch (IllegalArgumentException expected) {
  // any capacity less than 1 should throw IllegalArgumentException
 }
 assertEquals(1, Queues.newLinkedBlockingDeque(1).remainingCapacity());
 assertEquals(11, Queues.newLinkedBlockingDeque(11).remainingCapacity());
}

代码示例来源:origin: apache/flume

@Override
public synchronized void start() {
 channelCounter.start();
 channelCounter.setChannelSize(queue.size());
 channelCounter.setChannelCapacity(Long.valueOf(
     queue.size() + queue.remainingCapacity()));
 super.start();
}

代码示例来源:origin: apache/flume

@Override
protected void doRollback() {
 int takes = takeList.size();
 synchronized (queueLock) {
  Preconditions.checkState(queue.remainingCapacity() >= takeList.size(),
    "Not enough space in memory channel " +
    "queue to rollback takes. This should never happen, please report");
  while (!takeList.isEmpty()) {
   queue.addFirst(takeList.removeLast());
  }
  putList.clear();
 }
 putByteCounter = 0;
 takeByteCounter = 0;
 queueStored.release(takes);
 channelCounter.setChannelSize(queue.size());
}

代码示例来源:origin: jankotek/mapdb

/**
 * A new deque has the indicated capacity, or Integer.MAX_VALUE if
 * none given
 */
public void testConstructor1() {
  assertEquals(SIZE, new LinkedBlockingDeque(SIZE).remainingCapacity());
  assertEquals(Integer.MAX_VALUE, newDeque().remainingCapacity());
}

代码示例来源:origin: apache/flume

@Override
protected void doPut(Event event) throws InterruptedException {
 channelCounter.incrementEventPutAttemptCount();
 if (putList.remainingCapacity() == 0) {
  throw new ChannelException("Put queue for FileBackedTransaction " +
    "of capacity " + putList.size() + " full, consider " +

代码示例来源:origin: apache/flume

@Override
protected Event doTake() throws InterruptedException {
 channelCounter.incrementEventTakeAttemptCount();
 if (takeList.remainingCapacity() == 0) {
  throw new ChannelException("Take list for FileBackedTransaction, capacity " +
    takeList.size() + " full, consider committing more frequently, " +

代码示例来源:origin: jankotek/mapdb

/**
 * Returns a new deque of given size containing consecutive
 * Integers 0 ... n - 1.
 */
private static LinkedBlockingDeque<Integer> populatedDeque(int n) {
  LinkedBlockingDeque<Integer> q =
    new LinkedBlockingDeque<Integer>(n);
  assertTrue(q.isEmpty());
  for (int i = 0; i < n; i++)
    assertTrue(q.offer(new Integer(i)));
  assertFalse(q.isEmpty());
  assertEquals(0, q.remainingCapacity());
  assertEquals(n, q.size());
  assertEquals((Integer) 0, q.peekFirst());
  assertEquals((Integer) (n - 1), q.peekLast());
  return q;
}

代码示例来源:origin: org.onap.dcaegen2.analytics.tca/dcae-analytics-dmaap

@Override
  public synchronized int getRecoveryQueueRemainingSize() {
    return recoveryQueue.remainingCapacity();
  }
}

代码示例来源:origin: org.onap.dcaegen2.analytics.tca/dcae-analytics-dmaap

@Override
public synchronized int getBatchQueueRemainingSize() {
  return batchQueue.remainingCapacity();
}

代码示例来源:origin: pinterest/pinlater

public synchronized void recordSample(String shardName, boolean success) {
 ImmutableMap<String, ShardState> shardHealthMap = shardHealthMapRef.get();
 ShardState shardState = shardHealthMap.get(shardName);
 if (shardState.healthSamples.remainingCapacity() == 0) {
  shardState.numSuccessesInWindow -= shardState.healthSamples.removeLast();
 }
 int successVal = success ? 1 : 0;
 shardState.numSuccessesInWindow += successVal;
 shardState.healthSamples.addFirst(successVal);
}

代码示例来源:origin: org.onap.dcaegen2.analytics.tca/dcae-analytics-dmaap

@Override
public synchronized int addBatchMessages(List<String> batchMessages) {
  // checks if batchMessages size does not exceed batch queue capacity
  if (batchMessages.size() > batchQueue.remainingCapacity()) {
    throw new IllegalStateException("Not enough capacity to add batchMessages  in batch queue");
  }
  // Add batchMessages to batch queue
  for (String message : batchMessages) {
    batchQueue.add(message);
  }
  // returns current elements size in batch queue
  return batchQueue.size();
}

代码示例来源:origin: org.onap.dcaegen2.analytics.tca/dcae-analytics-dmaap

@Override
public synchronized int addRecoverableMessages(List<String> recoverableMessages) {
  // checks if messages size does not exceed recovery queue size
  if (recoverableMessages.size() > recoveryQueue.remainingCapacity()) {
    throw new IllegalStateException("Not enough capacity to add messages in recovery queue");
  }
  // add messages to recovery queue
  for (String recoverableMessage : recoverableMessages) {
    recoveryQueue.add(recoverableMessage);
  }
  // returns current size of recovery queue
  return recoveryQueue.size();
}

代码示例来源:origin: com.twitter.common/stats

@Override
 public Long doSample() {
  long lastDelta = 0l;
  if (deltaSeries.remainingCapacity() == 0) {
   lastDelta = deltaSeries.removeFirst();
  }

  long newInput = inputAccessor.get().longValue();
  long newDelta = newInput - lastInput;
  lastInput = newInput;

  deltaSeries.addLast(newDelta);

  sumDelta += newDelta - lastDelta;

  return sumDelta;
 }
}

代码示例来源:origin: mayconbordin/streaminer

public void add(T num) {
  long lastDelta = 0l;
  if (deltaSeries.remainingCapacity() == 0) {
   lastDelta = deltaSeries.removeFirst();
  }
  long newInput = num.longValue();
  long newDelta = newInput - lastInput;
  lastInput = newInput;
  deltaSeries.addLast(newDelta);
  sumDelta += newDelta - lastDelta;
}

代码示例来源:origin: com.twitter.common/stats

@Override
 public Double doSample() {
  T sample = input.read();

  if (samples.remainingCapacity() == 0) {
   sampleSum -= samples.removeLast().doubleValue();
  }

  samples.addFirst(sample);
  sampleSum += sample.doubleValue();

  return sampleSum / samples.size();
 }
}

代码示例来源:origin: org.apache.flume/flume-ng-core

@Override
public synchronized void start() {
 channelCounter.start();
 channelCounter.setChannelSize(queue.size());
 channelCounter.setChannelCapacity(Long.valueOf(
     queue.size() + queue.remainingCapacity()));
 super.start();
}

代码示例来源:origin: com.google.guava/guava-tests

public void testNewLinkedBlockingDequeCapacity() {
 try {
  Queues.newLinkedBlockingDeque(0);
  fail("Should have thrown IllegalArgumentException");
 } catch (IllegalArgumentException expected) {
  // any capacity less than 1 should throw IllegalArgumentException
 }
 assertEquals(1, Queues.newLinkedBlockingDeque(1).remainingCapacity());
 assertEquals(11, Queues.newLinkedBlockingDeque(11).remainingCapacity());
}

相关文章

微信公众号

最新文章

更多