摘要: 1.服务端注册一个serverSocketChannel(确定好服务器IP和端口号)到Selector上,监听accept事件。2.Selector不断的轮询看有没触发监听的事件,这里就是有没接受到到这个socket的请求。有了就找出SelectionKey。这时的SelectionKey对应的是服务端的serverSocketChannelServerSocketChannelssc=(ServerSocketChannel)key.channel(); 3.取的客户端发请求的SocketChannelsocket=(SocketChannel)ssc.accept(); 4.监听这个客户端 阅读全文
posted @ 2012-11-25 22:52 寂静沙滩 阅读(272) 评论(0) 推荐(0) 编辑
摘要: Java NIO非堵塞应用通常适用用在I/O读写等方面,我们知道,系统运行的性能瓶颈通常在I/O读写,包括对端口和文件的操作上,过去,在打开一个I/O通道后,read()将一直等待在端口一边读取字节内容,如果没有内容进来,read()也是傻傻的等,这会影响我们程序继续做其他事情,那么改进做法就是开设线程,让线程去等待,但是这样做也是相当耗费资源的。Java NIO非堵塞技术实际是采取Reactor模式,或者说是Observer模式为我们监察I/O端口,如果有内容进来,会自动通知我们,这样,我们就不必开启多个线程死等,从外界看,实现了流畅的I/O读写,不堵塞了。Java NIO出现不只是一个技术 阅读全文
posted @ 2012-11-25 22:40 寂静沙滩 阅读(1429) 评论(0) 推荐(0) 编辑
摘要: 开始--运行--cmd 进入命令提示符 输入netstat -ano 即可看到所有连接的PID 之后在任务管理器中找到这个PID所对应的程序如果任务管理器中没有PID这一项,可以在任务管理器中选"查看"-"选择列" 经常,我们在启动应用的时候发现系统需要的端口被别的程序占用,如何知道谁占有了我们需要的端口,很多人都比较头疼,下面就介绍一种非常简单的方法,希望对大家有用假如我们需要确定谁占用了我们的9050端口1、Windows平台在windows命令行窗口下执行:C:\>netstat -aon|findstr "9050"TC 阅读全文
posted @ 2012-11-25 19:36 寂静沙滩 阅读(422) 评论(0) 推荐(0) 编辑
摘要: 这几天在看IO和NIO, 说IO是阻塞的,当多个IO访问服务器时,发生阻塞的时候,CPU要不停的轮询每个IO的线程,看哪个IO的阻塞解除。会浪费CPU资源。 然后我看了线程的状态分类,专门有人说过阻塞和同步是不一样的。 1、新建状态(New):新创建了一个线程对象。 2、就绪状态(Runnable) 阅读全文
posted @ 2012-11-25 00:28 寂静沙滩 阅读(6037) 评论(0) 推荐(1) 编辑