スレッドの実験 その3Advertisementスレッドに優先度を設定するぜ
public class ThreadTest{
public static void main(String args[]){
System.out.println("main開始");
//スレッド A のオブジェクト tha生成
ThreadA tha = new ThreadA();
//スレッド B のオブジェクト tha生成
ThreadB thb = new ThreadB();
//スレッド A の優先度、最強
tha.setPriority(Thread.MAX_PRIORITY);
System.out.println("スレッド A 起動");
tha.start(); //スレッド A 開始
System.out.println("スレッド B 起動");
thb.start(); //スレッド B 開始
try{
System.out.println("スレッドの終了待ち");
tha.join(); //thaの終了待ち
thb.join(); //thbの終了待ち
}catch(Exception e){
System.err.println(e); //なんかエラーの場合
System.exit(1);
}
System.out.println("main終了");
}
}
class ThreadA extends Thread{ //Threadクラス継承
//コンストラクタ
ThreadA(){}
public void run(){
for(int i = 0; i < 10; i++){
System.out.println("スレッドA " + (i+1) + " 回目");
}
System.out.println("スレッド A 終了");
}
}
class ThreadB extends Thread{ //Threadクラス継承
//コンストラクタ
ThreadB(){}
public void run(){
for(int i = 0; i < 10; i++){
System.out.println("スレッドB " + (i+1) + " 回目");
}
System.out.println("スレッド B 終了");
}
}
スレッドAの優先度を最強に。
他の使い方は一番下。 今回の結果↓ main 開始 スレッド A 起動 スレッドA 1 回目 スレッドA 2 回目 スレッドA 3 回目 スレッドA 4 回目 スレッドA 5 回目 スレッドA 6 回目 スレッドA 7 回目 スレッドA 8 回目 スレッドA 9 回目 スレッドA 10 回目 スレッド A 終了 スレッド B 起動 スレッドの終了待ち スレッドB 1 回目 スレッドB 2 回目 スレッドB 3 回目 スレッドB 4 回目 スレッドB 5 回目 スレッドB 6 回目 スレッドB 7 回目 スレッドB 8 回目 スレッドB 9 回目 スレッドB 10 回目 スレッド B 終了 main 終了 メソッド・定数
Threadクラスの優先度関係の関数
Threadクラスの優先度関係の定数
使い方
優先度設定
obj.setPriority(Thread.MAX_PRIORITY);
これで最強。
いまより優先度をひとつあげるなら
obj.setPriority(obj.getPriority()+1);
ややこしそうに見えるけど単純。今の優先度を取得して、それに1足して設定。 実験
実験。スレッドを2つ生成して両方優先度最強にしてみる。
結果:普通にバラけた。(実験1の結果と同じ) 優先度が同じになっただけだ。 次に2個とも最強にしてから、どちらかの優先度にさらに1足してみる。
tha.setPriority(Thread.MAX_PRIORITY);
結果:実行エラー。
thb.setPriority(Thread.MAX_PRIORITY); thb.setPriority(thb.getPriority() + 1); java.lang.IllegalArgumentException
これ(リンク先:java.sun.com)。
■以下引用 MIN_PRIORITYとMAX_PRIORITYの定数 ここ(リンク先:java.sun.com)。 MIN_PRIORITYが1、MAX_PRIORITYが10。ちなみにNORM_PRIORITYは5。 Advertisement |
ショートカット・634・このカテゴリのトップページに戻る ・634labs UIコレクションギャラリー サイト検索Y!ログール |