read()
メソッドは、入力リソース(キーボード/ファイル/ネットワーク/プログラム)のストリームでバイトが使用可能になるまでブロックします。シングルスレッドのJavaプログラムの場合java.io.InputStream - read()
public abstract int read() throws IOException
1)、blocked状態にjava processを移動するには、カーネルを有効read()
をブロックしていますか?
2)マルチスレッドJavaプログラムの場合、1つのスレッドでread()
をブロックすると、他のスレッドがCPUスライスを占有できますか? Javaプロセスを続けると、に実行され、CPUタイムスライスまでが実行されます。
現実的には、シングルスレッドのJavaプロセスを見つけることはできません。 JVM自体は複数のスレッドを生成します。 –
@AndrewHenleあなたはJVMシステムスレッドについて話していますか? GC/compiler/VM/..これは実行時にJavaプログラムの一部になります – overexchange
プロセスにはそのような状態はなく、スレッドだけが行います。 –