From the foregoing discussion, it can be seen that there is a need to provide checkpointing and restoration of the threads of a process, object or other component within a multithreaded application program replicated using semi-active or passive replication.