title: RxJava .subscribeOn(Schedulers.newThread()) questions
body: <p>I am on plain JDK 8. I have this simple RxJava example:</p>
  
  <pre><code>Observable
  .from(Arrays.asList("one", "two", "three"))
  .doOnNext(word -&gt; System.out.printf("%s uses thread %s%n", word, Thread.currentThread().getName()))
  //.subscribeOn(Schedulers.newThread())
  .subscribe(word -&gt; System.out.println(word));
  </code></pre>
  
  <p>and it prints out the words line by line, intertwined with information about the thread, which is 'main' for all next calls, as expected.</p>
  
  <p>However, when I uncomment the <code>subscribeOn(Schedulers.newThread())</code> call, nothing is printed at all. Why isn't it working? I would have expected it to start a new thread for each <code>onNext()</code> call and the <code>doOnNext()</code> to print that thread's name. Right now, I see nothing, also for the other schedulers.</p>
  
  <p>When I add the call to <code>Thread.sleep(10000L)</code> at the end of my main, I can see the output, which would suggest the threads used by RxJava are all daemons. Is this the case? Can this be changed somehow, but using a custom ThreadFactory or similar concept, and not have to implement a custom Scheduler?</p>
  
  <p>With the mentioned change, the thread name is always <code>RxNewThreadScheduler-1</code>, whereas the documentation for newThread says "Scheduler that creates a new <code>{@link Thread}</code> for each unit of work". Isn't it supposed to create a new thread for all of the emissions?</p>