是否可以将Scala Future序列化为byte[]
,然后再次反序列化?。
如果可能的话,有人知道最好的方法吗?
答案 0 :(得分:1)
import concurrent.ExecutionContext.Implicits._
println(if ((concurrent.Future{}).isInstanceOf[Serializable]) "Yes" else "No")
打印
No
答案 1 :(得分:1)
在scala中使用Futures的标准实现是不可能的。 未来显然不会实现Serializable接口,也不应该进行序列化。
问题是,当未来尚未结束时会发生什么。 Future之所以执行是因为它的任务是在ExecutionContext中安排的。 如果将这个Future序列化并在另一个JVM上反序列化,那么该任务将仅在第一个JVM上调度。在第二个JVM上,未来永远不会得到结果。
在准备就绪后立即序列化Future的内容可能更有意义。