スレッドプールExecutorServiceでのsubmitとexecuteの違い


1、executeはインタフェースExecutorの方法であり、submitはExecutorサブインタフェースExecutorServiceの方法である(ExecutorServiceインタフェースはExecutorインタフェースを継承し、Executorはスレッドプールのトップインタフェースである).
2、受信パラメータが違います.
void execute(Runnable command);

Future submit(Callable task);
Future submit(Runnable task, T result);
Future> submit(Runnable task);


3、戻り値
  • execute戻り値
  • なし
  • submitはfutureを返し、スレッドが返す結果データ
  • を取得することができる.
    submit()      :
       1.    cancle       
       2.    get()          
    

    4、異常処理
  • executeは直接異常を放出する、スレッドの外部で異常をキャプチャすることができず、この異常をキャプチャするには、UncautheExceptionHandlerインタフェース
  • を実現することができる.
  • submitは例外を投げ出すことなく、戻り値Futureオブジェクトのgetメソッド
  • を呼び出す必要がある.
    また、ここではExecutorとExecutorsの違いを説明します.
  • Executorタスクを実行するための「実行者」インタフェースです.正確には、Executerは、コミットされたRunnableタスクを実行するためのexecute()インタフェースを提供します.Executorの目的は、「タスクの発行」と「タスクの実行方法」を分離するメカニズムを提供することです.関数インタフェースは1つしか含まれていません.
  • Executors Executorsは静的ファクトリクラスです.静的ファクトリメソッドを使用して、ExecutorService、S h e d u l edExecutorService、ThreadFactory、Callableなどのクラスのオブジェクトを返します.