- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
深入浅出Redis-redis哨兵集群
深入浅出Redis-redis哨兵集群
源码设计
接收器Acceptor
/**
*
* @author seaboat
* @date 2016-08-25
* @version 1.0
* prebemail: /b849586227@/pre
* prebblog: /b/wangyangzhizhou/pre
* pThis Acceptor provides a NIO mode to accept client sockets./p
*/
public final class Acceptor extends Thread {
private static final Logger LOGGER = LoggerFactory
.getLogger(Acceptor.class);
private final int port;
private final Selector selector;
private final ServerSocketChannel serverChannel;
private long acceptCount;
private static final AcceptIdGenerator IdGenerator = new AcceptIdGenerator();
private ReactorPool reactorPool;
public Acceptor(ReactorPool reactorPool, String name, String bindIp,
int port) throws IOException {
super.setName(name);
this.port = port;
this.selector = Selector.open();
this.serverChannel = ServerSocketChannel.open();
this.serverChannel.configureBlocking(false);
this.serverChannel.setOption(StandardSocketOptions.SO_REUSEADDR, true);
this.serverChannel.setOption(StandardSocketOptions.SO_RCVBUF, 1024);
this.serverChannel.bind(new InetSocketAddress(bindIp, port), 100);
this.serverChannel.register(selector, SelectionKey.OP_ACCEPT);
this.reactorPool = reactorPool;
}
public int getPort() {
return port;
}
public long getAcceptCount() {
return acceptCount;
}
@Override
public void run() {
final Selector selector = this.selector;
for (;;) {
++acceptCount;
try {
selector.select(1000L);
SetSelectionKey keys = selector.selectedKeys();
try {
for (SelectionKey key : keys) {
if (key.isValid() key.isAcceptable()) {
accept();
} else {
key.cancel();
}
}
文档评论(0)