static final class NewThreadTask implements Callable<Scheduler> { @Override public Scheduler call() throws Exception { return NewThreadHolder.DEFAULT; } } change to getInstance(){ return NewThreadHolder.DEFAULT; } the first What are the benefits?