本文共 909 字,大约阅读时间需要 3 分钟。
这张照片2014年拍摄于桑科草原。
王皓的GitHub:https://github.com/TenaciousDWang
在网络编程中,我们经常需要两个端点程序进行通讯,通过连接来交换数据,这就需要scoket编程。
socket通讯过程如下:
在Java中我们一般使用java.net包中的Socket与ServerSocket这两个类来实现该过程。下面是基于Block Input/Output 模型的传统Socket编程实现。
其次是客户端IOClient.java
传统BIO模型下的Socket编程在客户端较少的使用情况下运行尚可,但是如果客户端有成千上万的情况下,就比较捉急了,因为我们看到,在IOServer.java中每创建一个新的连接,都需要一个线程用while死循环来维持流的读写操作,如果有1万的连接,就会对应1万个死循环线程,如此,众多的阻塞线程对操作系统消耗很大,其次我们知道Java对于多线程是通过切换线程来运行程序的,有限的资源对应如此多的线程,会导致线程频繁的切换,导致效率低下,为了应对这种情况在JDK1.4版本之后Java加入了基于Non-blocking Input/Output模型的Socket编程包java.nio。
公众号地址:
转载地址:http://fnzli.baihongyu.com/