Netflix/RxJava — pull request #822 by zsxwing (2014-02-06 07:36:02+00:00)
Title: Reimplement 'subscribeOn' using 'lift'

hi, this PR reimplemented the 'subscribeOn' using 'lift'. However, both the original and current implementation can not guarantee that 'unsubscribe' is always called in the `scheduler`. A extreme example is:

```java
public static void main(String[] args) throws InterruptedException {
Observable.create(new OnSubscribe() {

@Override
public void call(final Subscriber t1) {
final Subscription s = Subscriptions.create(new Action0() {

@Override
public void call() {
System.out.println(Thread.currentThread().getName());
}
});
t1.add(s);
new Thread(new Runnable() {

@Override
public void run() {
t1.unsubscribe();
}

}, "test").start();
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
t1.onCompleted();
}
}).subscribeOn(Schedulers.newThread()).subscribe();
Thread.sleep(10000);
}
```
will output "test".