Skip to content

Instantly share code, notes, and snippets.

@yshrsmz
Created July 15, 2016 01:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yshrsmz/a5823ffe17d5e6eace6fa8364a70173f to your computer and use it in GitHub Desktop.
Save yshrsmz/a5823ffe17d5e6eace6fa8364a70173f to your computer and use it in GitHub Desktop.
import rx.Scheduler;
import rx.internal.util.RxThreadFactory;
import rx.schedulers.Schedulers;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Executors;
import java.util.concurrent.atomic.AtomicLong;
public class SingleThreadSchedulerPool {
private final static List<Scheduler> SCHEDULERS = new ArrayList<>();
private final static AtomicLong COUNT = new AtomicLong(0L);
static {
SCHEDULERS.add(Schedulers.from(Executors.newSingleThreadExecutor(new RxThreadFactory("SingleThreadScheduler-1-"))));
SCHEDULERS.add(Schedulers.from(Executors.newSingleThreadExecutor(new RxThreadFactory("SingleThreadScheduler-2-"))));
SCHEDULERS.add(Schedulers.from(Executors.newSingleThreadExecutor(new RxThreadFactory("SingleThreadScheduler-3-"))));
}
private SingleThreadSchedulerPool() {
// no-op
}
public static Scheduler get() {
long current = COUNT.getAndIncrement();
return SCHEDULERS.get((int) (current % 3)); // 3 is the size of SCHEDULERS
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment