ではなく、いくつかのデータがあるまでOSはread
から戻らないとOSが決定BLOCKED
public static void main(String[] args) throws IOException {
Thread main = Thread.currentThread();
new Thread(() -> {
for (int i = 0; i < 10; i++) {
System.out.println(main + " is in "+main.getState()+" state");
try {
Thread.sleep(100);
} catch (InterruptedException e) {
throw new AssertionError(e);
}
}
}).start();
System.in.read();
}
プリント
Thread[main,5,main] is in RUNNABLE state
Thread[main,5,main] is in RUNNABLE state
Thread[main,5,main] is in RUNNABLE state
Thread[main,5,main] is in RUNNABLE state
Thread[main,5,main] is in RUNNABLE state
Thread[main,5,main] is in RUNNABLE state
Thread[main,5,main] is in RUNNABLE state
Thread[main,5,main] is in RUNNABLE state
Thread[main,5,main] is in RUNNABLE state
Thread[main,5,main] is in RUNNABLE state
にスレッドの状態を変更しません。スレッド/プロセスをコンテキスト切り替えするかどうか、またいつ切り替えるか。
JVMは、読み込みしようとしているリソースのデータが再び利用可能になったときに、スレッドが続行できることをスレッドにどのように通知しますか?
さらにデータがあるとき、またはストリームが閉じているときにOSがスレッドをウェイクアップします。 JVMは関与しません。