当前位置: 首页>>代码示例>>Java>>正文


Java Selector.wakeup方法代码示例

本文整理汇总了Java中java.nio.channels.Selector.wakeup方法的典型用法代码示例。如果您正苦于以下问题:Java Selector.wakeup方法的具体用法?Java Selector.wakeup怎么用?Java Selector.wakeup使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在java.nio.channels.Selector的用法示例。


在下文中一共展示了Selector.wakeup方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: stopListening

import java.nio.channels.Selector; //导入方法依赖的package包/类
/**
 * Close Selector.
 *
 * @see org.apache.catalina.tribes.transport.ReceiverBase#stop()
 */
protected void stopListening() {
    setListen(false);
    Selector selector = this.selector.get();
    if (selector != null) {
        try {
            // Unlock the thread if is is blocked waiting for input
            selector.wakeup();
            // Wait for the receiver thread to finish
            int count = 0;
            while (running && count < 50) {
                Thread.sleep(100);
                count ++;
            }
            if (running) {
                log.warn(sm.getString("NioReceiver.stop.threadRunning"));
            }
            closeSelector();
        } catch (Exception x) {
            log.error("Unable to close cluster receiver selector.", x);
        } finally {
            this.selector.set(null);
        }
    }
}
 
开发者ID:liaokailin,项目名称:tomcat7,代码行数:30,代码来源:NioReceiver.java

示例2: registerSelector

import java.nio.channels.Selector; //导入方法依赖的package包/类
public static SelectionKey registerSelector(final Selector selector,
        final SocketChannel channel, final int op)
        throws CancelledKeyException, ClosedChannelException {
    // Register the selector at the channel, so that it will be notified
    // on the socket's events
    synchronized (RegisterGate) {
        // Wakeup the currently blocking reader/writer thread; we have
        // locked the RegisterGate to prevent the awakened thread to block again
        selector.wakeup();

        // Lock the selector to prevent the waiting worker threads going
        // into selector.select() which would block the selector.
        synchronized (selector) {
            return channel.register(selector, op, null);
        }
    }
}
 
开发者ID:Anoncheg1,项目名称:dibd,代码行数:18,代码来源:NNTPDaemon.java

示例3: main

import java.nio.channels.Selector; //导入方法依赖的package包/类
public static void main(String[] args) throws Exception {
    final Selector sel = Selector.open();

    Runnable r = new Runnable() {
        public void run() {
            try {
                sel.select();
            } catch (IOException x) {
                x.printStackTrace();
            }
        }
    };

    // start thread to block in Selector
    Thread t = new Thread(r);
    t.start();

    // give thread time to start
    Thread.sleep(1000);

    // interrupt, close, and wakeup is the magic sequence to provoke the NPE
    t.interrupt();
    sel.close();
    sel.wakeup();
}
 
开发者ID:lambdalab-mirror,项目名称:jdk8u-jdk,代码行数:26,代码来源:WakeupAfterClose.java

示例4: main

import java.nio.channels.Selector; //导入方法依赖的package包/类
public static void main(String argv[]) throws Exception {
    int waitTime = 4000;
    Selector selector = Selector.open();
    try {
        selector.wakeup();

        long t1 = System.currentTimeMillis();
        selector.select(waitTime);
        long t2 = System.currentTimeMillis();
        long totalTime = t2 - t1;

        if (totalTime > waitTime)
            throw new RuntimeException("Test failed");
    } finally {
        selector.close();
    }
}
 
开发者ID:lambdalab-mirror,项目名称:jdk8u-jdk,代码行数:18,代码来源:WakeupSpeed.java

示例5: stopListening

import java.nio.channels.Selector; //导入方法依赖的package包/类
/**
 * Close Selector.
 *
 * @see org.apache.catalina.tribes.transport.ReceiverBase#stop()
 */
protected void stopListening() {
	setListen(false);
	Selector selector = this.selector.get();
	if (selector != null) {
		try {
			// Unlock the thread if is is blocked waiting for input
			selector.wakeup();
			// Wait for the receiver thread to finish
			int count = 0;
			while (running && count < 50) {
				Thread.sleep(100);
				count++;
			}
			if (running) {
				log.warn(sm.getString("NioReceiver.stop.threadRunning"));
			}
			closeSelector();
		} catch (Exception x) {
			log.error("Unable to close cluster receiver selector.", x);
		} finally {
			this.selector.set(null);
		}
	}
}
 
开发者ID:how2j,项目名称:lazycat,代码行数:30,代码来源:NioReceiver.java

示例6: reply

import java.nio.channels.Selector; //导入方法依赖的package包/类
void reply(XulHttpServerResponse serverResponse) {
	_response = serverResponse;

	serverResponse.addHeaderIfNotExists("Content-Type", "text/html")
		.addHeaderIfNotExists("Connection", "close");

	final String transferEncoding = _response.headers.get("Transfer-Encoding");
	_sendChunkedData = "chunked".equals(transferEncoding);
	serverResponse.prepareResponseData();

	_responseBuffer = ByteBuffer.wrap(serverResponse.getData(), 0, serverResponse.getDataSize());
	try {
		Selector selector = _server._selector;
		_socketChannel.register(selector, SelectionKey.OP_WRITE, this);
		selector.wakeup();
	} catch (ClosedChannelException e) {
		clear();
		XulLog.e(TAG, e);
	}
}
 
开发者ID:starcor-company,项目名称:starcor.xul,代码行数:21,代码来源:XulHttpServer.java

示例7: addEvent

import java.nio.channels.Selector; //导入方法依赖的package包/类
public void addEvent(Runnable event) {
    Selector selector = this.selector.get();
    if ( selector != null ) {
        synchronized (events) {
            events.add(event);
        }
        if ( log.isTraceEnabled() ) log.trace("Adding event to selector:"+event);
        if ( isListening() ) selector.wakeup();
    }
}
 
开发者ID:liaokailin,项目名称:tomcat7,代码行数:11,代码来源:NioReceiver.java

示例8: Handler

import java.nio.channels.Selector; //导入方法依赖的package包/类
public Handler(Selector sel, SocketChannel c) throws IOException {
	socket = c;
	c.configureBlocking(false);
	// Optionally try first read now
	sk = socket.register(sel, 0);
	sk.attach(this); // 将Handler作为callback对象
	sk.interestOps(SelectionKey.OP_READ); // 第二步,接收Read事件
	sel.wakeup();
}
 
开发者ID:spafka,项目名称:spark_deep,代码行数:10,代码来源:Handler.java

示例9: initialKeyRegister

import java.nio.channels.Selector; //导入方法依赖的package包/类
void initialKeyRegister(FDTSelectionKey fdtSelectionKey) {

        final Selector sel = fdtSelectionKey.selector;
        final SelectionTask st = fdtSelectionKey.selectionTask;

        boolean bShouldWakeup = false;

        // something gone wrong if either the Selector or the SelectionTask are
        // null

        // final ReentrantLock lock = st.lock;

        // lock.lock();
        // try {
        // } finally {
        // lock.unlock();
        // }

        synchronized (st) {
            if (st.renewQueue.isEmpty() && st.newQueue.isEmpty()) {
                bShouldWakeup = true;
            }

            st.newQueue.add(fdtSelectionKey);
        }

        if (bShouldWakeup) {
            sel.wakeup();
        }
    }
 
开发者ID:fast-data-transfer,项目名称:fdt,代码行数:31,代码来源:SelectionManager.java

示例10: main

import java.nio.channels.Selector; //导入方法依赖的package包/类
public static void main(String[] args) throws Exception {
    final Selector sel = Selector.open();

    Runnable r = new Runnable() {
        public void run() {
            try {
                sel.select();
            } catch (IOException x) {
                x.printStackTrace();
            } catch (ClosedSelectorException y) {
                System.err.println
                    ("Caught expected ClosedSelectorException");
            }
        }
    };

    // start thread to block in Selector
    Thread t = new Thread(r);
    t.start();

    // give thread time to start
    Thread.sleep(1000);

    // interrupt, close, and wakeup is the magic sequence to provoke the NPE
    t.interrupt();
    sel.close();
    sel.wakeup();
}
 
开发者ID:AdoptOpenJDK,项目名称:openjdk-jdk10,代码行数:29,代码来源:WakeupAfterClose.java

示例11: addEvent

import java.nio.channels.Selector; //导入方法依赖的package包/类
public void addEvent(Runnable event) {
	Selector selector = this.selector.get();
	if (selector != null) {
		synchronized (events) {
			events.add(event);
		}
		if (log.isTraceEnabled())
			log.trace("Adding event to selector:" + event);
		if (isListening())
			selector.wakeup();
	}
}
 
开发者ID:how2j,项目名称:lazycat,代码行数:13,代码来源:NioReceiver.java

示例12: notifyWritable

import java.nio.channels.Selector; //导入方法依赖的package包/类
void notifyWritable() throws IOException {
	if (_responseBuffer == null) {
		return;
	}

	final SocketChannel socketChannel = _socketChannel;
	socketChannel.write(_responseBuffer);
	if (!_responseBuffer.hasRemaining()) {
		if (_response.hasUserBodyStream()) {
			final Selector selector = _server._selector;
			final XulHttpServerHandler attachment = this;
			socketChannel.register(selector, 0, attachment);
			selector.wakeup();
			_server._reactorPool.execute(new Runnable() {
				@Override
				public void run() {
					try {
						int beginOffset = _sendChunkedData ? 32 : 0;
						int endOffset = _sendChunkedData ? 2 : 0;
						int sizeLimit = _sendChunkedData ? 8192 : -1;
						if (_response == null || !_response.prepareUserBodyData(beginOffset, endOffset, sizeLimit)) {
							terminate();
							return;
						}
						int dataSize = _response.getDataSize();
						if (dataSize <= 0) {
							if (_sendChunkedData) {
								_response.writeStream(null);
								_responseBuffer = ByteBuffer.wrap("0\r\n\r\n".getBytes());
							} else {
								terminate();
								return;
							}
						} else {
							final byte[] data = _response.getData();
							if (_sendChunkedData) {
								String dataLength = String.format("%X\r\n", dataSize);
								final byte[] dataLengthBytes = dataLength.getBytes();
								beginOffset -= dataLengthBytes.length;
								System.arraycopy(dataLengthBytes, 0, data, beginOffset, dataLengthBytes.length);
								dataSize += dataLengthBytes.length;
								data[beginOffset + dataSize++] = '\r';
								data[beginOffset + dataSize++] = '\n';
							}
							_responseBuffer = ByteBuffer.wrap(data, beginOffset, dataSize);
						}
						socketChannel.register(selector, SelectionKey.OP_WRITE, attachment);
						selector.wakeup();
					} catch (Exception e) {
						terminate();
						XulLog.e(TAG, e);
					}
				}
			});
		} else {
			socketChannel.close();
		}
		return;
	}
}
 
开发者ID:starcor-company,项目名称:starcor.xul,代码行数:61,代码来源:XulHttpServer.java


注:本文中的java.nio.channels.Selector.wakeup方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。