4.5.1.2 ノンプリエンプティブなスレッド

ノンプリエンプティブなスレッド環境においては、スレッドは自発的にCPUの制御を放棄し、RUNNABLEな状態に移行します。Java言語クラス内の多くのメソッドには、制御を自発的に放棄するコードが含まれており、通常は長い処理時間のかかる操作に関連付けられています。たとえば、ネットワークからデータを読み取ると、スレッドは通常パケットの到着を待機します。イベントやリソースが使用可能になるまで待機するスレッドは、BLOCKED状態になります。イベントが発生するか、リソースが使用可能になると、そのスレッドはRUNNABLEになります。