作者回复: 其实,主要还是因为用了Java底层的阻塞式IO。不可否认的是,现实生活中,符合条件的非阻塞场景并不多。
作者回复: 没错
作者回复: 是的,可以这么理解。
作者回复: 是的,可以这么理解。
作者回复: 主要是看任务是“阻塞型”,还是“非阻塞型”。如果是阻塞型,则无法:单线程并发。
作者回复: 其实,它的流程和普通锁是差不多的,区别在于,普通的锁在获取不到执行权限的时候,会阻塞,而Mutex则是挂起。
作者回复: 可以这么理解,协程的好处在于,并发概念与线程之间完全解耦了,同样的代码改动一个参数就能实现单线程并发。案例中之所以可以实现单线程并发,本质还是因为非阻塞。
作者回复: 嗯,其中有挂起和恢复。
作者回复: 多个消费者不一定要多个线程,我们使用多个协程也可以的。
作者回复: 确实没有绝对的优劣,要分场景讨论才行。