Skip to content

Instantly share code, notes, and snippets.

@joaocsousa
Last active January 29, 2018 09:37

Revisions

  1. joaocsousa revised this gist Jan 29, 2018. 3 changed files with 17 additions and 17 deletions.
    2 changes: 1 addition & 1 deletion Main.java
    Original file line number Diff line number Diff line change
    @@ -47,4 +47,4 @@ public static void main(String[] args) throws InterruptedException {
    Thread.sleep(20000);

    }
    }
    }
    4 changes: 2 additions & 2 deletions SingletonTask.java
    Original file line number Diff line number Diff line change
    @@ -7,7 +7,7 @@ public enum SingletonTask {
    int result = randomGenerator.nextInt(100);
    System.out.println("-> Started Task at " + (System.currentTimeMillis() - Main.START_TIME) + "ms");
    Thread.sleep(3000);
    System.out.println("-> Finished Task at " + (System.currentTimeMillis() - Main.START_TIME) + "ms");
    System.out.println("-> Finished Task at " + (System.currentTimeMillis() - Main.START_TIME) + "ms. Value To Deliver: " + result);
    observableEmitter.onNext(result);
    observableEmitter.onComplete();
    }).share();
    @@ -19,4 +19,4 @@ public static SingletonTask singletonTask() {
    public Observable<Integer> getObservable() {
    return longRunningObservable;
    }
    }
    }
    28 changes: 14 additions & 14 deletions _output.txt
    Original file line number Diff line number Diff line change
    @@ -1,14 +1,14 @@
    [1] subscribed at 234ms
    -> Started Task at 238ms
    [2] subscribed at 1238ms
    [3] subscribed at 2239ms
    -> Finished Task at 3242ms
    [1] Received result. Value: 55
    [4] subscribed at 3243ms
    [2] Received result. Value: 55
    -> Started Task at 3243ms
    [3] Received result. Value: 55
    [5] subscribed at 4247ms
    -> Finished Task at 6245ms
    [4] Received result. Value: 27
    [5] Received result. Value: 27
    [1] subscribed at 224ms
    -> Started Task at 229ms
    [2] subscribed at 1230ms
    [3] subscribed at 2233ms
    -> Finished Task at 3231ms. Value To Deliver: 40
    [1] Received result. Value: 40
    [2] Received result. Value: 40
    [3] Received result. Value: 40
    [4] subscribed at 3239ms
    -> Started Task at 3239ms
    [5] subscribed at 4243ms
    -> Finished Task at 6243ms. Value To Deliver: 84
    [4] Received result. Value: 84
    [5] Received result. Value: 84
  2. joaocsousa revised this gist Jan 29, 2018. No changes.
  3. joaocsousa revised this gist Jan 29, 2018. 3 changed files with 24 additions and 26 deletions.
    14 changes: 5 additions & 9 deletions Main.java
    Original file line number Diff line number Diff line change
    @@ -9,46 +9,42 @@ public static void main(String[] args) throws InterruptedException {
    singletonTask.getObservable()
    .subscribeOn(Schedulers.newThread())
    .observeOn(Schedulers.single())
    .subscribe(timestamp -> System.out.println("[1] Got result: " + formatTimestamp(timestamp) + "ms"));
    .subscribe(result -> System.out.println("[1] Received result. Value: " + result));
    System.out.println("[1] subscribed at " + (System.currentTimeMillis() - START_TIME) + "ms");

    Thread.sleep(1000);

    singletonTask.getObservable()
    .subscribeOn(Schedulers.newThread())
    .observeOn(Schedulers.single())
    .subscribe(timestamp -> System.out.println("[2] Got result: " + formatTimestamp(timestamp) + "ms"));
    .subscribe(result -> System.out.println("[2] Received result. Value: " + result));
    System.out.println("[2] subscribed at " + (System.currentTimeMillis() - START_TIME) + "ms");

    Thread.sleep(1000);

    singletonTask.getObservable()
    .subscribeOn(Schedulers.newThread())
    .observeOn(Schedulers.single())
    .subscribe(timestamp -> System.out.println("[3] Got result: " + formatTimestamp(timestamp) + "ms"));
    .subscribe(result -> System.out.println("[3] Received result. Value: " + result));
    System.out.println("[3] subscribed at " + (System.currentTimeMillis() - START_TIME) + "ms");

    Thread.sleep(1000);

    singletonTask.getObservable()
    .subscribeOn(Schedulers.newThread())
    .observeOn(Schedulers.single())
    .subscribe(timestamp -> System.out.println("[4] Got result: " + formatTimestamp(timestamp) + "ms"));
    .subscribe(result -> System.out.println("[4] Received result. Value: " + result));
    System.out.println("[4] subscribed at " + (System.currentTimeMillis() - START_TIME) + "ms");

    Thread.sleep(1000);

    singletonTask.getObservable()
    .subscribeOn(Schedulers.newThread())
    .observeOn(Schedulers.single())
    .subscribe(timestamp -> System.out.println("[5] Got result: " + formatTimestamp(timestamp) + "ms"));
    .subscribe(result -> System.out.println("[5] Received result. Value: " + result));
    System.out.println("[5] subscribed at " + (System.currentTimeMillis() - START_TIME) + "ms");

    Thread.sleep(20000);

    }

    private static String formatTimestamp(long timestamp) {
    return String.valueOf((timestamp - START_TIME) % 1000000);
    }
    }
    10 changes: 6 additions & 4 deletions SingletonTask.java
    Original file line number Diff line number Diff line change
    @@ -1,20 +1,22 @@
    public enum SingletonTask {
    INSTANCE;

    private final Observable<Long> longRunningObservable = Observable.<Long>create(observableEmitter -> {
    long timestamp = System.currentTimeMillis();
    private final Random randomGenerator = new Random(System.currentTimeMillis());

    private final Observable<Integer> longRunningObservable = Observable.<Integer>create(observableEmitter -> {
    int result = randomGenerator.nextInt(100);
    System.out.println("-> Started Task at " + (System.currentTimeMillis() - Main.START_TIME) + "ms");
    Thread.sleep(3000);
    System.out.println("-> Finished Task at " + (System.currentTimeMillis() - Main.START_TIME) + "ms");
    observableEmitter.onNext(timestamp);
    observableEmitter.onNext(result);
    observableEmitter.onComplete();
    }).share();

    public static SingletonTask singletonTask() {
    return INSTANCE;
    }

    public Observable<Long> getObservable() {
    public Observable<Integer> getObservable() {
    return longRunningObservable;
    }
    }
    26 changes: 13 additions & 13 deletions _output.txt
    Original file line number Diff line number Diff line change
    @@ -1,14 +1,14 @@
    [1] subscribed at 229ms
    -> Started Task at 233ms
    [2] subscribed at 1233ms
    [1] subscribed at 234ms
    -> Started Task at 238ms
    [2] subscribed at 1238ms
    [3] subscribed at 2239ms
    -> Finished Task at 3237ms
    [1] Got result: 233ms
    [2] Got result: 233ms
    [3] Got result: 233ms
    [4] subscribed at 3244ms
    -> Started Task at 3244ms
    [5] subscribed at 4248ms
    -> Finished Task at 6246ms
    [4] Got result: 3244ms
    [5] Got result: 3244ms
    -> Finished Task at 3242ms
    [1] Received result. Value: 55
    [4] subscribed at 3243ms
    [2] Received result. Value: 55
    -> Started Task at 3243ms
    [3] Received result. Value: 55
    [5] subscribed at 4247ms
    -> Finished Task at 6245ms
    [4] Received result. Value: 27
    [5] Received result. Value: 27
  4. joaocsousa renamed this gist Jan 29, 2018. 1 changed file with 0 additions and 0 deletions.
    File renamed without changes.
  5. joaocsousa revised this gist Jan 29, 2018. No changes.
  6. joaocsousa revised this gist Jan 29, 2018. No changes.
  7. joaocsousa created this gist Jan 29, 2018.
    54 changes: 54 additions & 0 deletions Main.java
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,54 @@
    public class Main {

    public static final long START_TIME = System.currentTimeMillis();

    public static void main(String[] args) throws InterruptedException {

    SingletonTask singletonTask = singletonTask();

    singletonTask.getObservable()
    .subscribeOn(Schedulers.newThread())
    .observeOn(Schedulers.single())
    .subscribe(timestamp -> System.out.println("[1] Got result: " + formatTimestamp(timestamp) + "ms"));
    System.out.println("[1] subscribed at " + (System.currentTimeMillis() - START_TIME) + "ms");

    Thread.sleep(1000);

    singletonTask.getObservable()
    .subscribeOn(Schedulers.newThread())
    .observeOn(Schedulers.single())
    .subscribe(timestamp -> System.out.println("[2] Got result: " + formatTimestamp(timestamp) + "ms"));
    System.out.println("[2] subscribed at " + (System.currentTimeMillis() - START_TIME) + "ms");

    Thread.sleep(1000);

    singletonTask.getObservable()
    .subscribeOn(Schedulers.newThread())
    .observeOn(Schedulers.single())
    .subscribe(timestamp -> System.out.println("[3] Got result: " + formatTimestamp(timestamp) + "ms"));
    System.out.println("[3] subscribed at " + (System.currentTimeMillis() - START_TIME) + "ms");

    Thread.sleep(1000);

    singletonTask.getObservable()
    .subscribeOn(Schedulers.newThread())
    .observeOn(Schedulers.single())
    .subscribe(timestamp -> System.out.println("[4] Got result: " + formatTimestamp(timestamp) + "ms"));
    System.out.println("[4] subscribed at " + (System.currentTimeMillis() - START_TIME) + "ms");

    Thread.sleep(1000);

    singletonTask.getObservable()
    .subscribeOn(Schedulers.newThread())
    .observeOn(Schedulers.single())
    .subscribe(timestamp -> System.out.println("[5] Got result: " + formatTimestamp(timestamp) + "ms"));
    System.out.println("[5] subscribed at " + (System.currentTimeMillis() - START_TIME) + "ms");

    Thread.sleep(20000);

    }

    private static String formatTimestamp(long timestamp) {
    return String.valueOf((timestamp - START_TIME) % 1000000);
    }
    }
    20 changes: 20 additions & 0 deletions SingletonTask.java
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,20 @@
    public enum SingletonTask {
    INSTANCE;

    private final Observable<Long> longRunningObservable = Observable.<Long>create(observableEmitter -> {
    long timestamp = System.currentTimeMillis();
    System.out.println("-> Started Task at " + (System.currentTimeMillis() - Main.START_TIME) + "ms");
    Thread.sleep(3000);
    System.out.println("-> Finished Task at " + (System.currentTimeMillis() - Main.START_TIME) + "ms");
    observableEmitter.onNext(timestamp);
    observableEmitter.onComplete();
    }).share();

    public static SingletonTask singletonTask() {
    return INSTANCE;
    }

    public Observable<Long> getObservable() {
    return longRunningObservable;
    }
    }
    14 changes: 14 additions & 0 deletions output.txt
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,14 @@
    [1] subscribed at 229ms
    -> Started Task at 233ms
    [2] subscribed at 1233ms
    [3] subscribed at 2239ms
    -> Finished Task at 3237ms
    [1] Got result: 233ms
    [2] Got result: 233ms
    [3] Got result: 233ms
    [4] subscribed at 3244ms
    -> Started Task at 3244ms
    [5] subscribed at 4248ms
    -> Finished Task at 6246ms
    [4] Got result: 3244ms
    [5] Got result: 3244ms