怎么使用netty架构完成非阻塞式并发编程?建立eventloopgroup,用于处理客户端事情。运行serverbootstrap,特定服务器ip和端口。关联并启动服务器,回到channelfuture目标。
怎么使用Java架构完成非阻塞式并发编程
前言非阻塞式并发编程是一种使应用软件能够同时处理多个任务且不造成性能下降的技术。在Java中,可以用例如Netty和Vert.x这类的框架来达到非阻塞式并发编程。本文将介绍怎样使用Netty架构完成非阻塞式并发编程。
Netty架构简述Netty是一个异步事件驱动网络应用架构,用以迅速且高效地开发可扩展的高性能协议服务器和客户端。它提供了一组用以撰写非阻塞并发程序的工具抽象。
应用Netty完成非阻塞式并发以下步骤反映了怎么使用Netty完成非阻塞式并发:
建立EventLoopGroup:这将创建一个线程池,用于处理来自客户端的事情。
EventLoopGroupeventLoopGroup=newNioEventLoopGroup();
运行ServerBootstrap:这将启动服务器,并关联它到特定端口。
ServerBootstrapserverBootstrap=newServerBootstrap();
serverBootstrap.group(eventLoopGroup)
...//配备别的选项
.childHandler(new ChannelInitializer() {
@Override
protected void initChannel(SocketChannel ch) throws Exception {
// 添加通道处理过程
}
});
关联并启动服务器:
ChannelFuturechannelFuture=serverBootstrap.bind(host,port).sync();
channelFuture.channel().closeFuture().sync();
实战案例 下列是一个应用Netty完成简单地非阻塞式并发echo云服务器实例:
EchoServer.java
publicclassEchoServer{
publicstaticvoidmain(String[]args)throwsException{
EventLoopGroupeventLoopGroup=newNioEventLoopGroup();
ServerBootstrapserverBootstrap=newServerBootstrap();
serverBootstrap.group(eventLoopGroup)
.channel(NioServerSocketChannel.class)
.localAddress(9876)
.childHandler(newChannelInitializer(){
@Override
protectedvoidinitChannel(SocketChannelch)throwsException{
ch.pipeline().addLast(newChannelInboundHandlerAdapter(){
@Override
publicvoidchannelRead(ChannelHandlerContextctx,Objectmsg){
ctx.write(msg);
}
});
}
});
ChannelFuturechannelFuture=serverBootstrap.bind().sync();
channelFuture.channel().closeFuture().sync();
eventLoopGroup.shutdownGracefully();
}
}
使用说明:
运作EchoServer.java。应用Telnet连接到服务器(比如,应用telnet localhost 9876)。输入文本,并按Enter键。服务器将回显键入的文本。以上就是怎么使用Java架构完成非阻塞式并发编程?的详细内容,大量请关注其他类似文章!