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

x33g5p2x  于2022-01-29 转载在 其他  
字(7.5k)|赞(0)|评价(0)|浏览(88)

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

Semaphore.getQueueLength介绍

[英]Returns an estimate of the number of threads waiting to acquire. The value is only an estimate because the number of threads may change dynamically while this method traverses internal data structures. This method is designed for use in monitoring of the system state, not for synchronization control.
[中]返回等待获取的线程数的估计值。该值只是一个估计值,因为当该方法遍历内部数据结构时,线程的数量可能会动态变化。该方法设计用于监控系统状态,而不是同步控制。

代码示例

代码示例来源:origin: resilience4j/resilience4j

/**
   * {@inheritDoc}
   */
  @Override
  public int getNumberOfWaitingThreads() {
    return semaphore.getQueueLength();
  }
}

代码示例来源:origin: org.apache.hadoop/hadoop-common

/**
 * Get the number of threads waiting to acquire a permit.
 * @return snapshot of the length of the queue of blocked threads.
 */
public int getWaitingCount() {
 return queueingPermits.getQueueLength();
}

代码示例来源:origin: kairosdb/kairosdb

public int getQueryWaitingCount()
{
  return semaphore.getQueueLength();
}

代码示例来源:origin: apache/incubator-pinot

private void acquireSema(String context, Logger logger)
  throws InterruptedException {
 if (_refreshThreadSemaphore != null) {
  long startTime = System.currentTimeMillis();
  logger.info("Waiting for lock to refresh : {}, queue-length: {}", context,
    _refreshThreadSemaphore.getQueueLength());
  _refreshThreadSemaphore.acquire();
  logger.info("Acquired lock to refresh segment: {} (lock-time={}ms, queue-length={})", context,
    System.currentTimeMillis() - startTime, _refreshThreadSemaphore.getQueueLength());
 } else {
  LOGGER.info("Locking of refresh threads disabled (segment: {})", context);
 }
}

代码示例来源:origin: redisson/redisson

@Override
protected void onMessage(RedissonLockEntry value, Long message) {
  if (message.equals(unlockMessage)) {
    Runnable runnableToExecute = value.getListeners().poll();
    if (runnableToExecute != null) {
      runnableToExecute.run();
    }
    value.getLatch().release();
  } else if (message.equals(readUnlockMessage)) {
    while (true) {
      Runnable runnableToExecute = value.getListeners().poll();
      if (runnableToExecute == null) {
        break;
      }
      runnableToExecute.run();
    }
    value.getLatch().release(value.getLatch().getQueueLength());
  }
}

代码示例来源:origin: redisson/redisson

@Override
protected void onMessage(RedissonLockEntry value, Long message) {
  if (message.equals(unlockMessage)) {
    Runnable runnableToExecute = value.getListeners().poll();
    if (runnableToExecute != null) {
      runnableToExecute.run();
    }
    value.getLatch().release();
  } else if (message.equals(readUnlockMessage)) {
    while (true) {
      Runnable runnableToExecute = value.getListeners().poll();
      if (runnableToExecute == null) {
        break;
      }
      runnableToExecute.run();
    }
    value.getLatch().release(value.getLatch().getQueueLength());
  }
}

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

"invokeOnewayImpl tryAcquire semaphore timeout, %dms, waiting thread nums: %d semaphoreAsyncValue: %d",
  timeoutMillis,
  this.semaphoreOneway.getQueueLength(),
  this.semaphoreOneway.availablePermits()
);

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

String.format("invokeAsyncImpl tryAcquire semaphore timeout, %dms, waiting thread nums: %d semaphoreAsyncValue: %d",
  timeoutMillis,
  this.semaphoreAsync.getQueueLength(),
  this.semaphoreAsync.availablePermits()
);

代码示例来源:origin: Red5/red5-server

if (log.isTraceEnabled()) {
  log.trace("{} session: {} state: {} keep-alive running: {}", new Object[] { conn.getClass().getSimpleName(), conn.getSessionId(), RTMP.states[conn.getStateCode()], conn.running });
  log.trace("Decoder lock - permits: {} queue length: {}", conn.decoderLock.availablePermits(), conn.decoderLock.getQueueLength());
  log.trace("Encoder lock - permits: {} queue length: {}", conn.encoderLock.availablePermits(), conn.encoderLock.getQueueLength());
  log.trace("Client streams: {} used: {}", conn.getStreams().size(), conn.getUsedStreamCount());
  if (!conn.getAttributes().isEmpty()) {

代码示例来源:origin: ltsopensource/light-task-scheduler

} else {
  LOGGER.warn("invokeAsyncImpl tryAcquire semaphore timeout, " + timeoutMillis
      + " waiting thread nums: " + this.semaphoreAsync.getQueueLength());
  LOGGER.warn(request.toString());

代码示例来源:origin: ltsopensource/light-task-scheduler

} else {
  LOGGER.warn("invokeAsyncImpl tryAcquire semaphore timeout, " + timeoutMillis
      + " waiting thread nums: " + this.semaphoreAsync.getQueueLength());
  LOGGER.warn(request.toString());

代码示例来源:origin: ltsopensource/light-task-scheduler

} else {
  LOGGER.warn("invokeOnewayImpl tryAcquire semaphore timeout, " + timeoutMillis
      + " waiting thread nums: " + this.semaphoreOneway.getQueueLength());
  LOGGER.warn(request.toString());

代码示例来源:origin: ltsopensource/light-task-scheduler

} else {
  LOGGER.warn("invokeOnewayImpl tryAcquire semaphore timeout, " + timeoutMillis
      + " waiting thread nums: " + this.semaphoreOneway.getQueueLength());
  LOGGER.warn(request.toString());

代码示例来源:origin: linkedin/indextank-engine

@Override
public SearchResults search(Query query, int start, int limit, int scoringFunctionIndex, Map<String, String> extraParameters) throws InterruptedException {
  // call delegate searcher
  try {
    int queueLen = semaphore.getQueueLength();
    if (queueLen >= maxSearchQueueLength) {
      logger.warn("Too many waiting to search, queue length = " + queueLen + ", returning without searching");
      throw new InterruptedException("Too many concurrent searches");
    }
    if (queueLen > 0) {
      logger.warn("Concurrent searches queue length is " + queueLen + ", will wait");
    }
    // consider adding a timeout to this call to semaphore.acquire()
    semaphore.acquire();
    try {
      return this.delegate.search(query, start, limit, scoringFunctionIndex, extraParameters);
    } finally {
      semaphore.release();
    }
  } catch (InterruptedException e) {
    logger.warn("Throwing InterruptedException: " + e.getMessage());
    throw e;
  }
}

代码示例来源:origin: linkedin/indextank-engine

@Override
  public int countMatches(Query query) throws InterruptedException {
    try {
      int queueLen = semaphore.getQueueLength();
      if (queueLen >= maxSearchQueueLength) {
        logger.warn("Too many waiting to search, queue length = " + queueLen + ", returning without searching");
        throw new InterruptedException("Too many concurrent searches");
      }
      if (queueLen > 0) {
        logger.warn("Concurrent searches queue length is " + queueLen + ", will wait");
      }
      // consider adding a timeout to this call to semaphore.acquire()
      semaphore.acquire();
      try {
        return this.delegate.countMatches(query);
      } finally {
        semaphore.release();
      }
    } catch (InterruptedException e) {
      logger.warn("Throwing InterruptedException: " + e.getMessage());
      throw e;
    }
  }
}

代码示例来源:origin: didi/DDMQ

"invokeOnewayImpl tryAcquire semaphore timeout, %dms, waiting thread nums: %d semaphoreAsyncValue: %d",
  timeoutMillis,
  this.semaphoreOneway.getQueueLength(),
  this.semaphoreOneway.availablePermits()
);

代码示例来源:origin: didi/DDMQ

String.format("invokeAsyncImpl tryAcquire semaphore timeout, %dms, waiting thread nums: %d semaphoreAsyncValue: %d",
  timeoutMillis,
  this.semaphoreAsync.getQueueLength(),
  this.semaphoreAsync.availablePermits()
);

代码示例来源:origin: javahongxi/whatsmars

"invokeOnewayImpl tryAcquire semaphore timeout, %dms, waiting thread nums: %d semaphoreAsyncValue: %d",
  timeoutMillis,
  this.semaphoreOneway.getQueueLength(),
  this.semaphoreOneway.availablePermits()
);

代码示例来源:origin: javahongxi/whatsmars

String.format("invokeAsyncImpl tryAcquire semaphore timeout, %dms, waiting thread nums: %d semaphoreAsyncValue: %d",
  timeoutMillis,
  this.semaphoreAsync.getQueueLength(),
  this.semaphoreAsync.availablePermits()
);

代码示例来源:origin: com.mesosphere.mesos.rx.java/mesos-rxjava-test

@Override
public void onError(final Throwable e) {
  LOGGER.trace("onError", e);
  obs.onError(e);
  releaseAll();
  LOGGER.trace("--- (queueLength, available) = ({}, {})", sem.getQueueLength(), sem.availablePermits());
}

相关文章