シェアする

  • このエントリーをはてなブックマークに追加





【java】【ExecutorService】通常のメソッドをマルチスレッドで並列処理

シェアする

  • このエントリーをはてなブックマークに追加
  • 0

javaで並列処理させようとすれば、Thread作って、startして~~となりがちなことが

多いですが、

JavaSE5の時代からすでにExecutorServiceという便利な代物が存在します。

これはThread管理をライブラリ側で肩代りしてくれるので、

実装者がThreadの生成・破棄については考慮することなく使用することができます。

とりわけ、普通にループしてたメソッドの性能が出ないなどの理由で、

マルチスレッドでガッとやってしまえ!!という時に絶大な効果を発揮します。

以下にサンプルを掲載します。

マルチスレッドで実行されるメソッド

以下のようなクラスのrunメソッドを実行するとします。

ここでは3秒待機するだけのメソッドとなります。

この部分が本来時間短縮したいメソッド処理部分のイメージです。

マルチスレッドで実行するメソッド

以下のように使用することで、マルチスレッドで実行させることが

できます。

コメントにあるように普通に10回実行すると、30秒かかるものが、

5スレッドで実行するので、全体で6秒ほどになります。

TPO限られるかもですが・・・

業務ロジックで性能が出ないものは、このようにマルチスレッドに

処理させることでうまくいくこともあるかもしれません。

ですが、トランザクションが絡んできたり、あるデータの状態遷移が

絡んでくる場合は、なかなかマルチスレッドによる適用が

難しい場面もあると思います。

マルチスレッドに動作させることが適当であるかどうかは、

TPOによるかもしれませんが、

うまくハマれば絶大な効果が得られると思います。

ブログランキング・にほんブログ村へ
にほんブログ村


人気ブログランキング

20代前半までは東京で音楽をやりながら両手の指以上の業種でアルバイト生活をしていましたが、某大手プロバイダのテレアポのバイトでPCの知識の無さに愕然とし、コンピュータをもっと知りたい!と思ったことをきっかけに25歳の時にITの世界に未経験で飛び込みました。
紆余曲折を経て、現在は個人事業主としてお仕事させていただいており、10年ほどになります。
web制作から企業システム構築、ツール開発など、フロントエンドもバックエンドもサーバーもDBAも依頼があれば何でもやってきた雑食系エンジニアです。

今風にいうとフルスタックエンジニアということになるのかしら??

→ 詳細プロフィールというか、生い立ちはこちら

→スキルシートをご覧になる場合はこちら

→お仕事のご依頼やお見積りなどお問い合わせはこちらから!

シェアする

  • このエントリーをはてなブックマークに追加

フォローはいかがですか?