java.nio.channels.Selector.selectNow()方法的使用及代码示例

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

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

Selector.selectNow介绍

[英]Detects if any of the registered channels is ready for I/O operations according to its SelectionKey. This operation will return immediately.
[中]根据SelectionKey检测任何已注册的通道是否已准备好进行I/O操作。此操作将立即返回。

代码示例

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

  1. int selectNow() throws IOException {
  2. try {
  3. return selector.selectNow();
  4. } finally {
  5. // restore wakeup state if needed
  6. if (wakenUp.get()) {
  7. selector.wakeup();
  8. }
  9. }
  10. }

代码示例来源:origin: io.netty/netty

  1. protected final boolean cleanUpCancelledKeys() throws IOException {
  2. if (cancelledKeys >= CLEANUP_INTERVAL) {
  3. cancelledKeys = 0;
  4. selector.selectNow();
  5. return true;
  6. }
  7. return false;
  8. }

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

  1. int selectNow() throws IOException {
  2. try {
  3. return selector.selectNow();
  4. } finally {
  5. // restore wakeup state if needed
  6. if (wakenUp.get()) {
  7. selector.wakeup();
  8. }
  9. }
  10. }

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

  1. /**
  2. * Check for data, waiting up to the given timeout.
  3. *
  4. * @param timeoutMs Length of time to wait, in milliseconds, which must be non-negative
  5. * @return The number of keys ready
  6. */
  7. private int select(long timeoutMs) throws IOException {
  8. if (timeoutMs < 0L)
  9. throw new IllegalArgumentException("timeout should be >= 0");
  10. if (timeoutMs == 0L)
  11. return this.nioSelector.selectNow();
  12. else
  13. return this.nioSelector.select(timeoutMs);
  14. }

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

  1. public void run() {
  2. try {
  3. selector.selectNow();
  4. } catch (IOException ignored) {
  5. }
  6. done = true;
  7. unpark(thread);
  8. }
  9. }

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

  1. private void selectAgain() {
  2. needsToSelectAgain = false;
  3. try {
  4. selector.selectNow();
  5. } catch (Throwable t) {
  6. logger.warn("Failed to update SelectionKeys.", t);
  7. }
  8. }
  9. }

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

  1. @Override
  2. public int selectNow() throws IOException {
  3. selectionKeys.reset();
  4. return delegate.selectNow();
  5. }

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

  1. int selectNow() throws IOException {
  2. try {
  3. return selector.selectNow();
  4. } finally {
  5. // restore wakeup state if needed
  6. if (wakenUp.get()) {
  7. selector.wakeup();
  8. }
  9. }
  10. }

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

  1. @Override
  2. public int selectNow() throws IOException {
  3. selectionKeys.reset();
  4. return delegate.selectNow();
  5. }

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

  1. private void selectAgain() {
  2. needsToSelectAgain = false;
  3. try {
  4. selector.selectNow();
  5. } catch (Throwable t) {
  6. logger.warn("Failed to update SelectionKeys.", t);
  7. }
  8. }
  9. }

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

  1. private void selectAgain() {
  2. needsToSelectAgain = false;
  3. try {
  4. selector.selectNow();
  5. } catch (Throwable t) {
  6. logger.warn("Failed to update SelectionKeys.", t);
  7. }
  8. }
  9. }

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

  1. private Selector selectRebuildSelector(int selectCnt) throws IOException {
  2. // The selector returned prematurely many times in a row.
  3. // Rebuild the selector to work around the problem.
  4. logger.warn(
  5. "Selector.select() returned prematurely {} times in a row; rebuilding Selector {}.",
  6. selectCnt, selector);
  7. rebuildSelector();
  8. Selector selector = this.selector;
  9. // Select again to populate selectedKeys.
  10. selector.selectNow();
  11. return selector;
  12. }

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

  1. @Override
  2. public int selectNow() throws IOException {
  3. selectionKeys.reset();
  4. return delegate.selectNow();
  5. }

代码示例来源:origin: EsotericSoftware/kryonet

  1. public void close () {
  2. super.close();
  3. synchronized (updateLock) { // Blocks to avoid a select while the selector is used to bind the server connection.
  4. }
  5. // Select one last time to complete closing the socket.
  6. if (!isClosed) {
  7. isClosed = true;
  8. selector.wakeup();
  9. try {
  10. selector.selectNow();
  11. } catch (IOException ignored) {
  12. }
  13. }
  14. }

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

  1. private Selector selectRebuildSelector(int selectCnt) throws IOException {
  2. // The selector returned prematurely many times in a row.
  3. // Rebuild the selector to work around the problem.
  4. logger.warn(
  5. "Selector.select() returned prematurely {} times in a row; rebuilding Selector {}.",
  6. selectCnt, selector);
  7. rebuildSelector();
  8. Selector selector = this.selector;
  9. // Select again to populate selectedKeys.
  10. selector.selectNow();
  11. return selector;
  12. }

代码示例来源:origin: alibaba/nacos

  1. @Override
  2. public void run() {
  3. while (true) {
  4. try {
  5. processTask();
  6. int readyCount = selector.selectNow();
  7. if (readyCount <= 0) {
  8. continue;
  9. }
  10. Iterator<SelectionKey> iter = selector.selectedKeys().iterator();
  11. while (iter.hasNext()) {
  12. SelectionKey key = iter.next();
  13. iter.remove();
  14. NIO_EXECUTOR.execute(new PostProcessor(key));
  15. }
  16. } catch (Throwable e) {
  17. SRV_LOG.error("[HEALTH-CHECK] error while processing NIO task", e);
  18. }
  19. }
  20. }

代码示例来源:origin: real-logic/aeron

  1. while (selector.selectNow() == 0)

代码示例来源:origin: real-logic/agrona

  1. /**
  2. * Explicit call to selectNow but without processing of selected keys.
  3. */
  4. public void selectNowWithoutProcessing()
  5. {
  6. try
  7. {
  8. selector.selectNow();
  9. selectedKeySet.reset();
  10. }
  11. catch (final IOException ex)
  12. {
  13. LangUtil.rethrowUnchecked(ex);
  14. }
  15. }
  16. }

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

  1. if (timeoutMillis <= 0) {
  2. if (selectCnt == 0) {
  3. selector.selectNow();
  4. selectCnt = 1;
  5. selector.selectNow();
  6. selectCnt = 1;
  7. break;

代码示例来源:origin: real-logic/aeron

  1. public int pollTransports()
  2. {
  3. int bytesReceived = 0;
  4. try
  5. {
  6. if (channelAndTransports.length <= ITERATION_THRESHOLD)
  7. {
  8. for (final ChannelAndTransport channelAndTransport : channelAndTransports)
  9. {
  10. bytesReceived += poll(channelAndTransport);
  11. }
  12. }
  13. else
  14. {
  15. selector.selectNow();
  16. final SelectionKey[] keys = selectedKeySet.keys();
  17. for (int i = 0, length = selectedKeySet.size(); i < length; i++)
  18. {
  19. bytesReceived += poll((ChannelAndTransport)keys[i].attachment());
  20. }
  21. selectedKeySet.reset();
  22. }
  23. }
  24. catch (final IOException ex)
  25. {
  26. LangUtil.rethrowUnchecked(ex);
  27. }
  28. return bytesReceived;
  29. }

相关文章