最近在学习NIO,在学习非阻塞Socket的时候
很困惑,不知道他相对于阻塞的Socket的优势
在哪,希望大神指点一二,在线等。
阻塞的程序简单,发送和接收一一对应,但是等待回复的过程中程序没响应,如果一直没回复就“死机”了。
非阻塞的正好相反,程序复杂但是响应快。
阻塞就是一直等待结果返回,非阻塞就是立即返回,等有了结果了以后,再回调,事件通知你
传统的阻塞式,每个连接必须要开一个线程来处理,并且没处理完线程不能退出。
非阻塞式,由于基于反应器模式,用于事件多路分离和分派的体系结构模式,所以可以利用线程池来处理。事件来了就处理,处理完了就把线程归还。而传统阻塞方式不能使用线程池来处理,假设当前有10000个连接,非阻塞方式可能用1000个线程的线程池就搞定了,而传统阻塞方式就需要开10000个来处理。如果连接数较多将会出现资源不足的情况。非阻塞的核心优势就在这里。
总的来说非阻塞肯定更加节约资源,而且非阻塞是系统来通知你,然后你做相应处理代码逻辑性更好。阻塞的那种要严格一步一步的来一部错了逻辑就全部乱了
谢谢大家,刚才在看你们回复的同事,也看了一篇帖子
。现在明白了5成了吧,我自己再研究研究,消化一下
阻塞就是一直等待结果返回,非阻塞就是立即返回,等有了结果了以后,再回调,事件通知你
阻塞的程序简单,发送和接收一一对应,但是等待回复的过程中程序没响应,如果一直没回复就“死机”了。
非阻塞的正好相反,程序复杂但是响应快