如何在不使用Threadpool Executors的情况下在单独的线程上异步执行可调用任务?

时间:2017-01-24 03:59:45

标签: multithreading rx-java

我需要在单独的线程上执行可调用的任务,并在不使用Threadpool Executors的情况下执行处理操作。以下是使用RxJava为我工作的解决方案。希望这有助于那里的人。如果您有任何建议或不同的解决方案,请随时在下面回答。

@Component
public class TaskProcessor<T> {


    @FunctionalInterface
    public interface ProcessResult<V> {
            void process(V v);
    }


    public  void runTaskOnNewThread(Callable<T> task,ProcessResult<T> action) {
            Assert.notNull(task, "task cannot be null");

             Observable.fromCallable(task)
                             .subscribeOn(Schedulers.newThread())
                             .subscribe(new Action1<T>() {

                                    @Override
                                    public void call(T result) {
                                         action.process(result);

                                    }
                            });

    }

}

1 个答案:

答案 0 :(得分:0)

(new Thread(()-> {action.process(task.call())}).start();