【问题标题】:Create Delegate-Event Model Sample Program in Java using callback使用回调在 Java 中创建委托事件模型示例程序
【发布时间】:2014-10-07 09:40:29
【问题描述】:

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

【问题讨论】:

    标签: java events callback


    【解决方案1】:

    这是一个非常简单的回调函数示例:

    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 接口作为回调。
    猜你喜欢
    • 1970-01-01
    • 2015-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-20
    • 2018-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多