Mad*_*sen 12 java io nonblocking blocking
我正在阅读JDK 7文档中的频道(这里),并偶然发现:
多路复用,非阻塞I/O,比面向线程更具可扩展性,阻塞I/O,[...]
关于为什么会这样,有一个简单的解释吗?
因为线程堆栈通常比支持异步I/O连接所需的数据结构大得多.此外,调度数千个线程效率低下.
“阻塞”意味着线程必须等待足够长的时间才能使资源变得可用......这意味着,根据定义,线程将等待资源。非阻塞避免了这种事情。
一般来说,非阻塞解决方案比较棘手,但它们避免了资源争用,这使得扩展更容易。(也就是说,这样做的目的Channel
是让这件事变得不那么棘手。)