ExecutorScheduler.java 文件源码

java
阅读 21 收藏 0 点赞 0 评论 0

项目:org.openntf.domino 作者:
@Override
public Subscription schedule(final Action0 action, long delayTime, TimeUnit unit) {
    if (delayTime <= 0) {
        return schedule(action);
    }
    if (isUnsubscribed()) {
        return Subscriptions.empty();
    }
    ScheduledExecutorService service;
    if (executor instanceof ScheduledExecutorService) {
        service = (ScheduledExecutorService)executor;
    } else {
        service = GenericScheduledExecutorService.getInstance();
    }

    final MultipleAssignmentSubscription mas = new MultipleAssignmentSubscription();
    // tasks.add(mas); // Needs a removal without unsubscription

    try {
        Future<?> f = service.schedule(new Runnable() {
            @Override
            public void run() {
                if (mas.isUnsubscribed()) {
                    return;
                }
                mas.set(schedule(action));
                // tasks.delete(mas); // Needs a removal without unsubscription
            }
        }, delayTime, unit);
        mas.set(Subscriptions.from(f));
    } catch (RejectedExecutionException t) {
        // report the rejection to plugins
        RxJavaPlugins.getInstance().getErrorHandler().handleError(t);
        throw t;
    }

    return mas;
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号