标签:java io nonblocking
我正在编写服务器 – 客户端应用程序.我有一个服务器,它拥有我从ServerSocket的accept()方法获得的几个套接字.我想从这些套接字读取,但我不知道哪个套接字可以读取.我需要某种选择器来选择一个可以读取的套接字,所以我可以读取它发送的数据.
谢谢.
解决方法:
您基本上有两个选项可以使它工作:
>每个接受的套接字都有专用线程.这是因为’常规’套接字I / O正在阻塞.您无法使用单个线程有选择地处理多个套接字.由于没有“偷看”功能,因此当您调用read时,您将始终面临被阻止的风险.通过为每个有兴趣读取的套接字创建一个线程,阻塞读取不会阻止任何其他操作(线程).
>使用NIO. NIO允许异步I / O操作,基本上就是您要求的 – 选择器.
如果您决定采用NIO方式,我建议您查看MINA和Netty.我发现它们比普通的NIO更容易使用.您不仅可以获得更好的API,而且至少MINA还可以解决一些令人讨厌的NIO错误.
标签:java,io,nonblocking 来源: https://codeday.me/bug/20191002/1844863.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。