ParallelScheduler(int n,ThreadFactory factory){if(n <=0){thrownewIllegalArgumentException("n > 0 required but it was "+ n);}this.n = n;this.factory = factory;//初始化定时器(ScheduledThreadPoolExecutor),n默认无cpu核心数init(n);}voidinit(int n){ScheduledExecutorService[] a =newScheduledExecutorService[n];for(int i =0; i < n; i++){
a[i]=Schedulers.decorateExecutorService(Schedulers.PARALLEL,this);}EXECUTORS.lazySet(this, a);}//获取定时器ScheduledThreadPoolExecutorScheduledExecutorServicepick(){ScheduledExecutorService[] a = executors;if(a !=SHUTDOWN){// ignoring the race condition here, its already random who gets which executorint idx = roundRobin;if(idx == n){
idx =0;
roundRobin =1;}else{
roundRobin = idx +1;}return a[idx];}returnTERMINATED;}