欢迎来到天天文库
浏览记录
ID:46692829
大小:70.50 KB
页数:8页
时间:2019-11-26
《运用JavaNIO提高做事端按次的性能》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、运用JavaNIO提高做事端按次的性能星散具体的JovaSocket编程,探求使用N10前进办事端步伐的坚守的问题。JavaNIO增长了新的SocketChannel>ServerSocketChannel等类來供给対成立高违拗的效力端举措的赞成。SocketChannel、ServerSocketChannel能够在非壅塞的形式下工作,它们但凡selectable的类。在树立服务器或者两端件时,引荐应用JavaN10o在传统的Internet编程屮,我们一样平常使用一个专门使用线程(Thread)来措置一个Socket邻接,颠末运用
2、NI0,—个可以或许很少几个Socket线程便可以处理不计其数个勾当的Socket邻接。一样平常悄况下,通过ServerSocketChannel.open()获得一个ServerSocketChannel的实例,经由过程SocketChannel.open笼统ServerSocketChannel.accept()失掉一个SocketChannel实例。要使ServerSocketChannel笼统SocketChannel在卄•缠闭的内容下垄断,可以调用sorverSockctChannel.configuroBlocking(f
3、alse);或者SocketChannel.configureBlocking(false);语句来抵达目的。一般状况下,效劳端可使用非壅塞的ServerSocketChannel,多么,做事真个措沌便可以更易地同时处置惩罚多个socket线程。下面我们来看一个赏析例子,这个例子运用了ServerSocketChannelSocketChannel斥地了一个非壅塞的、能处置多线程的Echo效能端措施,赐教例12-14o【递次源代码】1//==================ProgramDiscription=============
4、======2//程序名称:示例12-14:SocketChannelDemo.java3//程序目的:学习JavaNIO#SocketChannel4//========================================================565importjava.nio.ByteBuffer;6importjava.nio.channels.ServerSocketChannel;7importjava.nio.channels.SocketChannel;8importjava.nio.channel
5、s.Selector;1importjava.nio.channels.SelectionKey;2importjava.nio.channels.SelectableChannel;133importjava.net.Socket;4importjava.net.ServerSocket;5importjava.net.InetSocketAddress;6importjava.uti1.Iterator;187publicclassSocketChannelDemo208{9publicstaticintPORT.NUMBER=2
6、3;//监听端口10ServerSocketChannelserverChannel;11ServerSocketserverSocket;12Selectorselector;13privateByteBufferbuffer=ByteBuffer.allocateDirect(1024);2714publicstaticvoidmain(String[]args)15throwsException16{17SocketChannelDemoserver=newSocketChannelDemo();18scrvcr.init(ar
7、gs);19server.startWork();34}353637publicvoidinit(String[]argv)throwsException38{39intport=PORT_NUMBER;4040if(argv.length>0){41port=Integer.parselnt(argv[0]);43}4445System.out.println("Listeningonport"+port);4645//分配-•个ServerSocketChannel45serverChannel=ServerSocketChann
8、el.open();46//从ServerSocketChannel里获得一个对应的Socket47serverSocket=serverChannel.socket();48//生成一个Selector49select
此文档下载收益归作者所有