使用回调在Java中创建委托事件模型示例程序

时间:2014-10-07 09:40:30

标签: java events callback

我是java中的新手。我想更多地了解java事件处理的工作原理。所以我需要一个简单的例子来演示java中的自定义回调。应该是类似2个或更多类的东西可以在回调系统中注册。当某些事件发生时[每20秒钟一次计时器滴答]注册的班级必须收到通知。我找到了很多解释java回调的例子,但我正在寻找一个简单的例子。有人可以帮我吗? 非常感谢提前。

1 个答案:

答案 0 :(得分:0)

以下是工作中回调的一个非常简单的例子:

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();
  }
}

我希望这很简单,不言自明。