【发布时间】:2014-10-07 09:40:29
【问题描述】:
我是 java 新手。我想了解更多关于 java 事件处理如何工作的信息。所以我需要一个简单的例子来演示java中的自定义回调。它应该是可以在回调系统中注册的 2 个或更多类。当某些事件发生时[每 20 秒计时一次],已注册的班级必须收到通知。我找到了很多解释 java 回调的例子,但我正在寻找一个简单的例子。有人可以帮我吗? 提前非常感谢。
【问题讨论】:
我是 java 新手。我想了解更多关于 java 事件处理如何工作的信息。所以我需要一个简单的例子来演示java中的自定义回调。它应该是可以在回调系统中注册的 2 个或更多类。当某些事件发生时[每 20 秒计时一次],已注册的班级必须收到通知。我找到了很多解释 java 回调的例子,但我正在寻找一个简单的例子。有人可以帮我吗? 提前非常感谢。
【问题讨论】:
这是一个非常简单的回调函数示例:
public class Timer {
private final List<Runnable> callbacks = new ArrayList<>();
public void onTick(Runnable r) { synchronized (callbacks) { callbacks.add(r); } }
public void start() {
new Thread(() -> {
try {
while (true) {
synchronized (callbacks) {
callbacks.forEach(Runnable::run);
}
Thread.sleep(TimeUnit.SECONDS.toMillis(3));
}
} catch (InterruptedException e) {}
}).start();
}
public static void main(String[] args) {
final Timer t = new Timer();
t.onTick(() -> System.out.println("Ide vrijeme, prođe rok"));
t.onTick(() -> System.out.println("Eto vraga skok na skok"));
t.start();
}
}
我希望它足够简单,不言自明。
【讨论】:
onTick() 是注册方法,滴答发生在while (true) 循环内。
Runnable 接口作为回调。