をLinkedBlockingQueue
呼び出してtasks
いますが、呼び出しtasks.take()
てタスクが使用可能になるのを待つと、CPU 使用率が 100% になります。メソッドを使用する複数のスレッドtasks.take()
があります (すべてのスレッドには独自のtasks
変数があります)。なぜこれが起こっているのか誰にも分かりますか?
tasks
変数の定義
private LinkedBlockingQueue<ComputerTask> tasks;
// snip
this.tasks = new LinkedBlockingQueue<ComputerTask>(100);
タスクを取るコード
ComputerTask task = tasks.take();
新しいタスクを提供するコード
this.tasks.offer(task);
PSこれが私のバージョンのJavaに問題があるかどうかはわかりません。他のコンピューターではまだテストしていないためです。
java version "1.6.0_31"
Java(TM) SE Runtime Environment (build 1.6.0_31-b04-413-11M3623)
Java HotSpot(TM) 64-Bit Server VM (build 20.6-b01-413, mixed mode)