我有一个类型的哈希图(字符串,PojoObj)。这由我的 Java 程序使用,该程序使用 Quartz schedular 定期运行和触发。
为了安全起见突然杀死java进程..哈希图将被破坏..造成数据丢失..
所以,我计划在计划开始执行类时转储/同步 Hashmap 数据(pojo 对象)。如果同步是差分的,它将有效..(仅在 DB 中更新更改的值)。
我不知道该怎么做...请帮助我..我在我的程序中使用 Hibernate 3.5。
您可以为此目的使用 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();
}