观察者模式:
当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。观察者模式属于行为型模式。
Java 实现观察者(Observer)模式 参考
- https://blog.csdn.net/jjwwmlp456/article/details/39967021
- https://www.runoob.com/design-pattern/observer-pattern.html
初始化:
public void init() {
checkWorkList();
ListenerRunnable listenerRunnable = new ListenerRunnable();
ListenerThreadObserver observer = new ListenerThreadObserver(); //初始化监听线程的观察者实例
listenerRunnable.addObserver(observer); // 作为参数传给监听线程
Thread listenerThread = new Thread(listenerRunnable);
listenerThread.setDaemon(true);
listenerThread.start();
}
观察者:
class ListenerThreadObserver implements Observer {
@Override
public void update(Observable o, Object arg) {
try {
Thread.sleep(properties.getSleepTime());
} catch (InterruptedException e) {
logger.warn(e.getMessage());
}
init(); // 接收到数据变化的通知,则重新初始化,创建线程
logger.info("The encoder listener server has bean restarted!");
}
}
监听线程:
class ListenerRunnable extends Observable implements Runnable {
@Override
public void run() {
try {
while (true) {
......
Thread.sleep(properties.getSleepTime());
}
} catch (Exception e) {
logger.warn(e.getMessage());
setChanged(); // 捕获到异常,线程结束。标记 改变, 只有标记后才能通知到观察者
notifyObservers(); // 通知观察者
}
}
......
}
网友评论