2017-01-24 18 views
3

我需要在單獨的線程上執行可調用的任務,並執行處理操作而不使用Threadpool執行器。下面是使用RxJava爲我工作的解決方案。希望這可以幫助那裏的人。如果您有任何建議或不同的解決方案,請隨時在下面回答。如何在不使用Threadpool Executors的情況下在單獨的線程上異步執行可調用任務?

@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); 

            } 
          }); 

    } 

} 
+4

建議:你可以提出和回答你自己的問題。發佈問題時,點擊複選框 - **回答自己的問題** - https://stackoverflow.blog/2011/07/its-ok-to-ask-and-answer-your-own-questions/ –

+1

There總是一個線程池;你只需不必管理它。 – akarnokd

+0

@akarnokd你是對的,我們並不想管理池大小和其他依賴項。 – Sabarish

回答

0
(new Thread(()-> {action.process(task.call())}).start(); 
相關問題