如何在Java应用程序中获得准确的执行点?

时间:2016-03-02 15:36:19

标签: java multithreading serialization deserialization fault-tolerance

我想在运行的java应用程序中获取确切的执行点或运行代码行。

我正在研究一些容错方法并试图实现一些解决方案。我正在将Thread对象序列化为文件并强制关闭我的应用程序。我的目标是重新运行可序列化的Thread,而不是从“run”方法的开始,而是从序列化的那一行开始。

问题是:在正在运行的线程中,在调用“暂停”方法后,获取暂停代码的行。在此之后,我想实例化一个新的Thread类型并从该行运行。

任何人都知道我该怎么做?

1 个答案:

答案 0 :(得分:1)

您需要的是可序列化的延续。但是,在我听说过的解决方案中,他们要么是;

  • 不是一个完整的解决方案
  • 维持足够的信息非常慢,以至于你可以随时停止它。

更好的方法是拥有一个状态机,您可以在其中记录所有输入,因此您可以通过重播这些事件在任何时候重新创建应用程序。