春のThreadPoolTaskExecutor構成と完全な例外処理をキューイング

春ThreadPoolTask​​Executorは完全な例外処理をキューイング

<! -配置线程池- >
<豆ID = "ThreadPoolの"クラス= "org.springframework.scheduling.concurrent.ThreadPoolTask​​Executor">
<プロパティ名= "corePoolSize"値= "5" />
<プロパティ名=」 keepAliveSeconds」値= "30000" />
<プロパティ名= "maxPoolSize"値= "50" />
<プロパティ名= "queueCapacity"値= "100" />
</豆>

 corePoolSize:デフォルトのスレッド数で有効; maxPoolSize:最大スレッド数; queueCapacity:タスクキューのバッファ長を、
スレッドを作成する方法:

@Autowired
プライベートThreadPoolTask​​ExecutorのThreadPool。

 

threadPoolTask​​Executor.execute(Runnableを新しい新しい(){
               公共ボイドRUN(){
                   //非同期タスク
                }
            })。

春ThreadPoolTask​​Executorモードは、オブジェクトへのミッションに参加します阻止使用しないで、時間をかけてオブジェクトは、例外がスローされます。この場合には、一般的なビジネス環境では、メモリキュー容量の無制限の増加を実行することはできませんので、障害物のキューに参加しなければなりませんでした例外タスクを処理するThreadPoolExecutor.CallerRunsPolicyがキューは、タスクの残りのためにアイドル状態になっている場合でも、単一のタスクを実行するのに長い時間のためので、呼び出し元のスレッドの実行を置くことですので、組み込みの例外処理機構春のオファーは、良いではありませんこのタスクを実行し、その内部のキューに追加し続けることができ、メインスレッドで終了します。異常てexecutor.execute(撮像処理の方法)が存在する限り、キューを遮断する効果を模倣することができる異常が存在しなくなるまでの時間が異常な待機にあるように、次のコードです。

 

一方、(TRUE){

    {試します

        taskExecutor.execute(新しいMailSenderの(tUserIssueInfo));

        ブレーク;

    }キャッチ(TaskRejectedException電子){

        {試します

            Thread.sleep(1000);

        }キャッチ(例外E2){}

    }

}

おすすめ

転載: blog.csdn.net/xingqibaing/article/details/84136118