• ベストアンサー

スレッドプールの意味・使い方がわからない

javaの初心者に毛が生えた程度の者ですが、 java のExecutorクラスなるものが出てきて、調べてもよくわかりませんでした。 スレッドプールの意味と使い方・利点、リスクなど、どなたか 教えて頂けますでしょうか? スレッドの基礎中の基礎は一応分かっているつもりです。。。

質問者が選んだベストアンサー

  • ベストアンサー
  • nora1962
  • ベストアンサー率60% (431/717)
回答No.1

サーバーリソースは有限です(CPU、メモリ、DISK I/O) そうした時に、要求のたびにスレッドを生成し消滅させるコストは要求量が増えていくと、かなりの負担になります。どうせ、要求はすぐ、来ると分かっているのなら、あらかじめスレッドを生成させておき、消滅させずに再利用を図ることによってスレッドの生成・消滅(後処理)のコストを減らせるわけです。 また、同時実行スレッドの数があまり多いとスレッド間のコンテキストスィッチングの無駄も馬鹿になりません。 スレッド数は適度にとどめて、処理待ちの要求についてはキューにためて順次処理を行っていく利用方法もあります。 データベースとの接続のような重い処理などは、コネクションプーリングを行うのも同様の発想です。 参考までに http://www.ibm.com/developerworks/jp/java/library/j-jtp0730/index.html

regorugo
質問者

お礼

とてもわかりやすい回答ありがとうございました! もっと勉強しておきます^^; ありがとうございました!