4.5.2 Joltをノンプリエンプティブなスレッドで使用する

ノンプリエンプティブなスレッドを使用する仮想マシン(Sun Solarisなど)でJoltベースのJavaプログラムを実行する場合、プログラムで次のいずれかが行われる必要があります。

  • スレッドをブロックするメソッドをときどきコールします。
  • Thread.yield()メソッドを使用して、CPUの制御を明示的に放棄します。

通常は、実行するコードが長い部分または時間がかかりそうなループすべてで次のコールを行います。

Thread.currentThread.yield();

このメッセージを送信しないと、Joltライブラリで使用されるスレッドはスケジューリングされず、Jolt操作に不具合が生じます。

ノンプリエンプティブなスレッドを使用する仮想マシンとして知られている唯一のマシンは、Sunプラットフォーム用のJava Developer's Kit (JDK)です。アプレットをJDK 1.3で実行するには、yieldメッセージを必ず送信してください。すでに述べたように、メソッドの中にはyieldを含むものがあります。例外はSystem.in.readメソッドです。このメッセージはスレッドの切替えを行いません。これらのメッセージを使用するかわりに、yieldを明示的に使用することをお薦めします。