我理解的是,像cats-effects或者Zio这样的IO实现使用纤程(fiber),且在JVM上运行。
我想知道它们所使用的底层库或框架是什么,因为JVM,例如JVM 11尚未正式支持纤程?
我理解的是,像cats-effects或者Zio这样的IO实现使用纤程(fiber),且在JVM上运行。
我想知道它们所使用的底层库或框架是什么,因为JVM,例如JVM 11尚未正式支持纤程?
虚拟机(JVM)没有官方支持纤程(fibers)。但是,项目织物(Project Loom)正在开发中。
同时,像ZIO和Cats Effect这样的效果库正在维护线程池并滚动自己的线程调度实现,如Luis在问题评论中所述。
如果纤程实现仅限于特定库使您认为它们存在风险,请记住以下内容:在ZIO和Cats Effect中,纤程是低级概念。这些库的重点是在很大程度上将运行内容与确切运行方式的详细信息分离开来。它们仍然提供了灵活性,让您表达如何运行任务,但是在90%的情况下不使用此API部分。 ZIO和Cats Effect带给您的是一种用好的类型安全原语来表达并发任务的方法。这正是可以帮助您避免错误的地方。
Thread
中运行一样,而像Ref
这样的东西则是AtomicReference
的包装器。 - Luis Miguel Mejía Suárezzio
和cats-effect
都是非常高质量的项目,在Scala行业中被广泛使用。我认为它们不会比官方Java实现更容易出现“错误风险”。即使有,你也必须考虑以合理方式表达并发模式所避免的错误数量!ZIO和CE3可以帮助你做到这一点,而Java原语则不能。 - francoisr