でもやっつけすぎじゃね?
スレッド数の初期値とか勝手にかえていいのか?というかその辺はきまってないのか。
コードをみるかぎりスレッドが初期値1つ、最大10個まで増やしたい感じっぽいが、1つのまま
↓
update21 初期値を最大値と同じ10にしただけ
スレッド増やせてない原因はコンカレントAPIの使い方を間違っているため。こういう使い方するとスレッド数が増えませんよ、とJavadocに書いてあるのにそれやってるもんだから…。
ThreadPoolExecutorって結構使いにくいんだよね。
JavaSE6でコアスレッド以下の設定等が追加されてやっとまともになったともいえるが、その辺使われてないみたい。このままだとExecutors#newFixedThreadPool使うのと変わらん。というかどうせならそっち使ったほうが意図がわかりやすくていいのに。
おいらだったらSynchronousQueue つかって(もしくはallowCoreThreadTimeOut使う)タイムアウト時間短めにする。最大は100くらいまで増やして。10だと用途によっては引っかかる可能性もあるし。
コアなAPIのわりにいい加減だなぁ。と思った。
とりあえずJavaSEはupdate21にしておくのお勧め。