Currently, once a Runnable is started and then shut down, it cannot be started again. Enhance the Runnable trait and its implementations to support restarting: allow instances to be started, then shut down, and then started again. This will enable more flexible process management and is a prerequisite for implementing automatic restarts and back-off strategies.