aboutsummaryrefslogtreecommitdiffstats
path: root/AndroidAsync/src/com/koushikdutta/async/future/FutureThread.java
blob: 5f527e0ab3153992f64f7f0fde3419f244b16d64 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package com.koushikdutta.async.future;

import java.util.concurrent.ExecutorService;

/**
 * Created by koush on 12/22/13.
 */
public class FutureThread<T> extends SimpleFuture<T> {
    public FutureThread(final FutureRunnable<T> runnable) {
        this(runnable, "FutureThread");
    }

    public FutureThread(final ExecutorService pool, final FutureRunnable<T> runnable) {
        pool.submit(new Runnable() {
            @Override
            public void run() {
                try {
                    setComplete(runnable.run());
                }
                catch (Exception e) {
                    setComplete(e);
                }
            }
        });
    }

    public FutureThread(final FutureRunnable<T> runnable, String name) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    setComplete(runnable.run());
                }
                catch (Exception e) {
                    setComplete(e);
                }
            }
        }, name).start();
    }
}