非阻塞读取和阻塞读取的区别很明显,但写入方面我有些困惑。我知道非阻塞写入永远不会阻塞(当然!)。如果底层套接字缓冲区已满,则简单地不写入任何字节。这就是调用 channel.write 时检查已写入多少字节的重要性所在。
那么阻塞写入呢?什么时候会阻塞?调用 flush 时会阻塞吗?在 OutputStream 上调用 write 时呢?它是在等待底层写入套接字缓冲区中有空间吗?或者如果无法写入是否会抛出异常?
那么阻塞写入呢?什么时候会阻塞?调用 flush 时会阻塞吗?在 OutputStream 上调用 write 时呢?它是在等待底层写入套接字缓冲区中有空间吗?或者如果无法写入是否会抛出异常?