0

我有一个类型的哈希图(字符串,PojoObj)。这由我的 Java 程序使用,该程序使用 Quartz schedular 定期运行和触发。

为了安全起见突然杀死java进程..哈希图将被破坏..造成数据丢失..

所以,我计划在计划开始执行类时转储/同步 Hashmap 数据(pojo 对象)。如果同步是差分的,它将有效..(仅在 DB 中更新更改的值)。

我不知道该怎么做...请帮助我..我在我的程序中使用 Hibernate 3.5。

4

1 回答 1

0

您可以为此目的使用 ShutDown 处理程序:

public final class MyShutDownHandler extends Thread {

    private List<IObserver> observerList;
    private static MyShutDownHandler shutdownHandler;

    private MyShutDownHandler() {
        observerList = new ArrayList<IObserver>();
        Runtime.getRuntime().addShutdownHook(this);
    }

    public static MyShutDownHandler getShutdownHandler() {
        if (shutdownHandler == null) {
            synchronized (MyShutDownHandler.class) {
                if (shutdownHandler == null) {
                    shutdownHandler = new MyShutDownHandler();
                }
            }
        }
        return shutdownHandler;
    }

    public void run() {
        for (IObserver observer : observerList) {
            observer.execute();
        }
    }

    public void register(IObserver observer) {
        observerList.add(observer);
    }
}

您可以根据需要注册任意数量的观察者(IObserver 的实现)。特定的观察者可以在关闭发生之前执行必要的过程。

public interface IObserver {

    void execute();

}
于 2013-04-18T08:14:26.243 回答