使用fiber 最主要的问题就是 instrument 的问题,这些将在JDK9的时候不再需要手动处理。大多数官方文档已经有所介绍,其它一些坑这里列出。
构造器的问题
fiber 的 suspend 是以方法为基本的单位,当方法中包含阻塞操作的的时候(比如外部API请求),会导致无法 recovery constructor ,所以避免在方法中同时使用构造器和阻塞的方法。
fiber.get()
-
避免在Fiber 中调用fiber.get(), 为什么还不是很清楚,我们是使用Channel来进行fiber之间的消息传递。
-
fiber.get() 在线程中执行, 另外如果需要并发等待fiber执行完成 可以使用 Java Phaser.