我的理解是,在Java中,协同程序基于nio。所以我可以说java支持coroutine。我可以使用选择器/通道自己实现我的协同应用程序。我是对的吗?
答案 0 :(得分:1)
你可以有1个线程处理N个连接,但这不是实现协同程序;它只是杂耍。
最好的代码是异步感知,在阶段之前/之后拆分并异步启动读/写。它必须连接某种形式的回调处理程序,计划任务,反应流等,或者可选择的轮询循环的阶段以恢复处理,但显然不在同一行代码中。
java中没有办法(没有主要的jvm /字节码黑客)线程可以离开并透明地返回到方法的阻塞/让步点来做其他事情。
(这是假设您打算保存线程,而不是将它们浪费在某种形式的协同仿真中,并进一步阻塞等待/通知。显然可以暂停调用线程直到异步任务最终通知它;&# 39;没有赢得任何表演。)