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