标签: java io blocking nonblocking
我正在阅读JDK 7文档中的频道(here),并偶然发现了这一点:
多路复用,非阻塞I / O,比面向线程更具可扩展性,阻塞I / O,[...]
有没有一个简单的解释为什么会这样?
答案 0 :(得分:6)
因为线程堆栈通常比支持异步I / O连接所需的数据结构大得多。此外,安排数千个线程效率低下。
答案 1 :(得分:3)
“阻塞”意味着线程必须等待资源变得可用所需的时间......这意味着,根据定义,线程将等待资源。非阻塞可以避免这种情况。
通常,非阻塞解决方案更棘手,但它们避免了资源争用,这使得扩展更容易。 (也就是说,Channel的目的是让这不那么棘手。)
Channel