編集:これは本当に愚かですが、どうして私はそれが通常の増分がない通常のループであるかわかりません。私はこの質問を投稿したときに私が酔っていたことを願っています。とにかくみんなありがとう!保護されたブロック上のJava Oracleの例
できるだけ多くの情報と例を収集するために、Javaマルチスレッドに関するチュートリアルをいくつか続けます。
OracleのWebサイトにJava Concurrencyに関する公式のチュートリアルがあり、Guarded Blocksセクション(here)を見ています。
すべての概念は明確ですが、私はページ下部のプロデューサー/コンシューマーの例を読んでいますが、コードの一部を理解できません。
具体的には、次は、Consumerクラスのrun()メソッドのコードです。forループがどのように動作するのか分かりません。それは私に働くことができるように見えません。
誰でも私を説明できますか?
public void run() {
Random random = new Random();
for (String message = drop.take();
! message.equals("DONE");
message = drop.take()) {
System.out.format("MESSAGE RECEIVED: %s%n", message);
try {
Thread.sleep(random.nextInt(5000));
} catch (InterruptedException e) {}
}
}