public Disposable subscribe()

in todoapp/app/src/main/java/com/example/android/architecture/blueprints/todoapp/tasks/view/DeferredEventSource.java [34:54]


  public Disposable subscribe(Consumer<E> eventConsumer) {
    AtomicBoolean run = new AtomicBoolean(true);
    Thread t =
        new Thread(
            () -> {
              while (run.get()) {
                try {
                  E e = events.take();
                  if (run.get()) {
                    eventConsumer.accept(e);
                  }
                } catch (InterruptedException e) {
                }
              }
            });
    t.start();
    return () -> {
      run.set(false);
      t.interrupt();
    };
  }