public Subscription schedule(final Action0 action, long delayTime, TimeUnit unit) {
if (delayTime <= 0) {
return schedule(action);
}
if (isUnsubscribed()) {
return Subscriptions.unsubscribed();
}
ScheduledExecutorService service;
if (this.executor instanceof ScheduledExecutorService) {
service = this.executor;
} else {
service = GenericScheduledExecutorService.getInstance();
}
MultipleAssignmentSubscription first = new MultipleAssignmentSubscription();
final MultipleAssignmentSubscription mas = new MultipleAssignmentSubscription();
mas.set(first);
this.tasks.add(mas);
final Subscription removeMas = Subscriptions.create(new Action0() {
public void call() {
ExecutorSchedulerWorker.this.tasks.remove(mas);
}
});
ScheduledAction ea = new ScheduledAction(new Action0() {
public void call() {
if (!mas.isUnsubscribed()) {
Subscription s2 = ExecutorSchedulerWorker.this.schedule(action);
mas.set(s2);
if (s2.getClass() == ScheduledAction.class) {
((ScheduledAction) s2).add(removeMas);
}
}
}
});
first.set(ea);
try {
ea.add(service.schedule(ea, delayTime, unit));
return removeMas;
} catch (RejectedExecutionException t) {
RxJavaPlugins.getInstance().getErrorHandler().handleError(t);
throw t;
}
}
ExecutorScheduler.java 文件源码
java
阅读 23
收藏 0
点赞 0
评论 0
项目:boohee_v5.6
作者:
评论列表
文章目录