我需要在单独的线程上执行可调用的任务,并在不使用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);
}
});
}
}
答案 0 :(得分:0)
(new Thread(()-> {action.process(task.call())}).start();