List of usage examples for org.springframework.scheduling.concurrent CustomizableThreadFactory CustomizableThreadFactory
public CustomizableThreadFactory()
From source file:kymr.github.io.training.scheduler.SchedulerEx1.java
public static void main(String[] args) { Publisher<Integer> pub = sub -> { sub.onSubscribe(new Subscription() { @Override//from ww w. j a v a 2s . c o m public void request(long n) { log.debug("request()"); sub.onNext(1); sub.onNext(2); sub.onNext(3); sub.onNext(4); sub.onNext(5); sub.onComplete(); } @Override public void cancel() { } }); }; Publisher<Integer> subOnPub = sub -> { ExecutorService es = Executors.newSingleThreadExecutor(new CustomizableThreadFactory() { @Override public String getThreadNamePrefix() { return "subOn-"; } }); pub.subscribe(new Subscriber<Integer>() { @Override public void onSubscribe(Subscription s) { es.execute(() -> sub.onSubscribe(s)); } @Override public void onNext(Integer integer) { sub.onNext(integer); } @Override public void onError(Throwable t) { sub.onError(t); es.shutdown(); } @Override public void onComplete() { sub.onComplete(); es.shutdown(); } }); }; /*Publisher<Integer> subOnPub = sub -> { ExecutorService es = Executors.newSingleThreadExecutor(new CustomizableThreadFactory() { @Override public String getThreadNamePrefix() { return "subOn-"; } }); es.execute(() -> pub.subscribe(sub)); }; */ Publisher<Integer> pubOnPub = sub -> { subOnPub.subscribe(new Subscriber<Integer>() { ExecutorService es = Executors.newSingleThreadExecutor(new CustomizableThreadFactory() { @Override public String getThreadNamePrefix() { return "pubOn-"; } }); @Override public void onSubscribe(Subscription s) { sub.onSubscribe(s); } @Override public void onNext(Integer integer) { es.execute(() -> sub.onNext(integer)); } @Override public void onError(Throwable t) { es.execute(() -> sub.onError(t)); es.shutdown(); } @Override public void onComplete() { es.execute(() -> sub.onComplete()); es.shutdown(); } }); }; pubOnPub.subscribe(new Subscriber<Integer>() { @Override public void onSubscribe(Subscription s) { log.debug("onSubscribe"); s.request(Long.MAX_VALUE); } @Override public void onNext(Integer integer) { log.debug("onNext : {}", integer); } @Override public void onError(Throwable t) { log.debug("onError : {}", t); } @Override public void onComplete() { log.debug("onComplete"); } }); log.debug("exit"); }