Java io.reactivex.internal.schedulers.IoScheduler.CachedWorkerPool的工作原理?;

Java io.reactivex.internal.schedulers.IoScheduler.CachedWorkerPool的工作原理?;,java,rx-java2,Java,Rx Java2,下面是一些代码片段- CachedWorkerPool(long keepAliveTime, TimeUnit unit, ThreadFactory threadFactory) { this.keepAliveTime = unit != null ? unit.toNanos(keepAliveTime) : 0L; this.expiringWorkerQueue = new ConcurrentLinkedQueue<ThreadWorker>();

下面是一些代码片段-

CachedWorkerPool(long keepAliveTime, TimeUnit unit, ThreadFactory threadFactory) {
    this.keepAliveTime = unit != null ? unit.toNanos(keepAliveTime) : 0L;
    this.expiringWorkerQueue = new ConcurrentLinkedQueue<ThreadWorker>();
    this.allWorkers = new CompositeDisposable();
    this.threadFactory = threadFactory;

    ScheduledExecutorService evictor = null;
    Future<?> task = null;
    if (unit != null) {  
        evictor = Executors.newScheduledThreadPool(1, EVICTOR_THREAD_FACTORY);
        task = evictor.scheduleWithFixedDelay(this, this.keepAliveTime, this.keepAliveTime, TimeUnit.NANOSECONDS);
    }
    evictorService = evictor;
    evictorTask = task;
}
CachedWorkerPool(长keepAliveTime、时间单位、ThreadFactory ThreadFactory){
this.keepAliveTime=unit!=null?unit.toNanos(keepAliveTime):0L;
this.expiringWorkerQueue=新的ConcurrentLinkedQueue();
this.allWorkers=newcompositedisposable();
this.threadFactory=threadFactory;
ScheduledExecutorService驱逐器=null;
未来任务=null;
如果(单位!=null){
executor=Executors.newScheduledThreadPool(1,executor\u THREAD\u工厂);
task=exector.scheduleWithFixedDelay(this,this.keepAliveTime,this.keepAliveTime,TimeUnit.NANOSECONDS);
}
驱逐者服务=驱逐者;
驱逐任务=任务;
}
“驱逐者服务”是为什么而设计的?

何时何地使用?

为什么?管理一个
调度程序.Worker
实例池,并在一段时间后不使用时将其关闭。@重写public void run(){//清除过期的任务 executedExpiredWorkers();}您能告诉我什么时候触发了then run函数来执行executedExpiredWorkers函数吗,我就是无法启动。executer以
keepAliveTime
频率运行定期计时器,并调用
executedExpiredWorkers()