2017-03-14 6 views
0

私はSpring(Java 8)Webアプリケーションを作成しており、各リクエスト(別スレッド)ごとにいくつかのタスクを行います。できるだけ早く完了して、だから私は安全な方法で別のスレッドからアクセスできるワーカープールライブラリを探したいと思います。Java並行セーフティワーカープールキュー

実行プール、Rabbit MQについては読んでいますが、別のスレッドからタスクキューにアクセスする機能に関する情報は見つかりませんでした。

Javaでこれを行う方法を教えてもらえるかどうか、本当に感謝します。

+1

は([ '@のAsync']を見てくださいhttps://docs.spring.io/spring/docs/current/spring-framework-reference/html/scheduling.html#scheduling-annotation-support -async)。これを使用すると、新しいスレッドを生成し、その応答を返すことができます。 –

+0

注釈を使用してSpringでTaskExecutor(スレッドプールサイズなど)を設定する方法についてのリンクを教えてください。 –

+1

[Here](あなたが行く: –

答えて

1

ここでは、@Async注釈でSpringがサポートする非同期メソッド呼び出しを使用できます。

@Async

注釈付きメソッドは、新しいスレッドで実行され、結果は(voidリターンをもサポートされている)Future目的で利用できるようになります。メソッド呼び出しがノンブロッキングであることに注意してください。これにより、すべてのタスクが完了するのを待つことなく、迅速に応答を返すのに役立ちます。しかし、必要であれば、主スレッドはすべてのタスク、すなわちFutureがブロックするFuture.get()によって完了するのを待つようにすることができる。

非同期サポートを設定するには、コンフィグレーションクラスにと注釈を付け、下記のメソッド定義をhereとして指定します。

public Executor getAsyncExecutor() { 
    ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); 
    executor.setCorePoolSize(2); 
    executor.setMaxPoolSize(2); 
    executor.setQueueCapacity(500); 
    executor.initialize(); 
    return executor; 
}