在文件中存储可运行对象

时间:2014-05-20 22:27:15

标签: java multithreading

我想知道是否有这样做的好方法。我有一个Runnable对象列表但我现在无法让它们运行,因为我的服务器正在关闭。它们必须存储在磁盘上,以便下次服务器启动时,线程可以再次运行。

我不需要记住他们的状态。我想要的就是能够重新运行线程。我从哪里开始迷路了。任何建议将不胜感激。

1 个答案:

答案 0 :(得分:1)

使用Java 8,您可以从lambda表达式which are serializable创建Runnables。例如:

Runnable r = (Runnable & Serializable) () -> yourRunMethodHere();
try (ObjectOutput oo = new ObjectOutputStream(new FileOutputStream(file))) {
    oo.writeObject(r);
}

检索Runnable并运行它可以通过以下方式完成:

try (ObjectInput oi = new ObjectInputStream(new FileInputStream(file))) {
    Runnable  r = (Runnable) oi.readObject();
    r.run();
}

我不认为Java 7为这个问题提供了一个优雅的解决方案。