1. ホーム
  2. java

[解決済み】ExecutorServiceのsubmitとexecutorServiceのexecuteのどちらかを選択する。

2022-04-15 04:09:54

質問

のどちらかを選択する必要があります。 ExecutorServiceの サブミット または 実行 もし、返された値が私の関心事でないなら?

両方テストしても、返される値以外、両者に違いは見られませんでした。

ExecutorService threadExecutor = Executors.newSingleThreadExecutor();
threadExecutor.execute(new Task());


ExecutorService threadExecutor = Executors.newSingleThreadExecutor();
threadExecutor.submit(new Task());

解決方法は?

例外・エラー処理に差異があります。

でキューイングされたタスクは execute() を生成するもので ThrowableUncaughtExceptionHandler に対して Thread を実行するタスクが呼び出されます。デフォルトの UncaughtExceptionHandler を表示し、通常 Throwable スタックトレースを System.err は、カスタムハンドラがインストールされていない場合、呼び出されます。

一方 Throwable でキューイングされたタスクが生成する submit() がバインドされます。 ThrowableFuture の呼び出しから生成された submit() . 呼び出し get() その上で Future が投げられます。 ExecutionException を、元の Throwable をその原因としています(アクセスするには getCause() の上で ExecutionException ).