Java: スレッドの制御を学ぶ(優先度)

さて、昨日に引き続き、Javaのスレッドの勉強です。
昨日はスレッドの方法と排他制御でした。
今日はスレッドの他の制御について。

スレッドには優先度を付けることができるようです。
複数のスレッド間で資源が競合した際、高い優先度を持つスレッドのほうから優先して実行されます。優先度は1〜10で設定でき、10が最優先のようです。

Test test = new Test(); // runnableを実装したクラスを想定
Thread thread = new Thread(test);
int priority = thread.getPriority();
thread.setPriority(Thread.MAX_PRIORITY); // 10
thread.setPriority(Thread.MIN_PRIORITY); // 1
thread.setPriority(Thread.NORM_PRIORITY); // 5

ただ、資源の割り当て方はOSやJava仮想マシンの実装に大きく依存するらしく、Windowsではそれなりに機能するようですが、Linuxではほとんど意味をなしてないとのこと(ただし、参考にしている本は2003年の本なので、この情報は古いかもしれない)。ちゃんとしたプログラムを作る場合は、優先度の設定に依存するのではなく、自力でなんとかしたほうがよさそうです。


カテゴリー Java | タグ   | パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です