【发布时间】:2012-01-22 14:40:19
【问题描述】:
我有以下问题。给定观察者模式的接口 EventNotifier:
public interface EventNotifier {
void newEvent(final String value);
}
实现此接口的类可以注册到另一个类,该类经常调用newEvent方法。该接口是由外部库提供的,所以我无法更改它。到目前为止,我使用匿名类实现了它:
Thread t = new Thread(new Runnable() {
@Override
public void run() {
watcher = new Watcher(new EventNotifier() {
@Override
public void newEvent(String value) {
//do some stuff
//will be called more than 20 times per second
}
});
});
t.start();
为了更好的代码可读性,我想将这个匿名类公开到一个新类中,该类扩展了 Thread(因为处理应该与其他事物并行)。
我如何编写一个什么都不做(没有无限循环等)但等待调用 newEvent 方法的线程?问题是,newEvent 每秒会被调用超过 20 次,所以我不能为每个调用启动一个新线程,但整个事情应该在一个线程中。
我希望你能解决问题,有人可以帮助我。
【问题讨论】:
-
在当前的设计中,你有线程注册你的监听器然后终止,我认为这不是你想要的,不是吗?您是否希望对 newEvent 的调用 - “做一些事情” - 在单独的线程中处理?因为现在它们是在运行其他组件的线程中处理的。
标签: java multithreading observer-pattern