現状の処理では、内部の処理が溜まってしまう事象がある。メモリはバカ食いするが、CPUは遊んでいる状態でであり、ログから解析しても「スレッドに優先順位がない」のが原因だと推定している。上手に優先度を与えることでパフォーマンスはおそらく桁違いに改善されるだろう、と見込んでいる。タスクまたはスレッドに優先度をつけ、処理がスムースに動くようにしたいのだ。

 

Java 1.5 から Java.util.concurrent という「並列処理ユーティリティ」が追加されている。しかし、

この中でも、Futureを使った例は多いが、これは「非同期」でどれも並列である。優先度はつけられなさそうである。

「Javaのスレッドの優先度」をく調べていると困った問題を発見した。Javaのスレッドは、例えばSolalrsの場合、Java 1.5 なら2段階しかないらしい。

http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/vm/thread-priorities.html

他のOSでもOSごとに違うらしい。このような状態では使いたいと思えない。OSもバージョンが変わると扱いが変わるおそれがあるからだ。

 

他の方法を考えなければ・・。