Next: 16.6 スレッドの終了待ち joinメソッド
Up: 16 スレッドのスケジューリング
Previous: 16.4 スレッドのキャンセル cancellation
スレッドがCPUの使用を手放すのを可能とするいくつかのメソッドとして,
sleep, yieldなどがThreadクラスにある.
public static void sleep(long millisec)
throws InterruptedException
public static void sleep(long millisec, int nanosec)
throws InterruptedException
public static void yield();
yieldメソッドは,現在実行中のスレッドを一旦とめて,他のスレッドが
実行されることを許すためのメソッドで,その時点でカレントスレッドを実行さ
せる必要がないということをスケジューラに伝える.
// Babble.java
class Babble extends Thread {
static boolean doYield;
static int howOften;
private String word;
Babble(String whatToSay) {
word = whatToSay;
}
public void run() {
for (int i=0;
i < howOften; i++) {
System.out.println(word);
if (doYield)
Thread.yield();
}
}
public static void main(String[] args) {
doYield =
new Boolean(args[0]).booleanValue();
howOften = Integer.parseInt(args[1]);
for (int i=2; i < args.length; i++) {
new Babble(args[i]).start();
}
}
}
実行すると次のようになる.
% java Babble false 2 Did DidNot
Did
Did
DidNot
DidNot
% java Babble true 2 Did DidNot
Did
DidNot
Did
DidNot
% java Babble true 4 Did DidNot
Did
Did
DidNot
Did
DidNot
Did
DidNot
DidNot
% java Babble true 4 Did DidNot
Did
DidNot
Did
DidNot
Did
DidNot
Did
DidNot
% java Babble faulse 4 Did DidNot
Did
Did
Did
Did
DidNot
DidNot
DidNot
DidNot
% java Babble fauls 4 Did DidNot
Did
Did
Did
Did
DidNot
DidNot
DidNot
DidNot
% java Babble fauls 4 Did DidNot
Did
Did
Did
Did
DidNot
DidNot
DidNot
DidNot
% java Babble fau 4 Did DidNot
Did
Did
Did
Did
DidNot
DidNot
DidNot
DidNot
generated through LaTeX2HTML. M.Inaba 平成18年5月7日