私はアンドロイドのドキュメント(泥のようにはっきりしています)を読みました、そしてそれはそれを言います:
待つ
別のスレッドがこのオブジェクトのnotify()またはnotifyAll()メソッドを呼び出すまで、呼び出し元のスレッドを待機させます。
通知する
(wait()メソッドの1つを呼び出すことによって)このオブジェクトのモニターで待機しているスレッドをウェイクアップさせます。
それはそれを意味しますか:
public synchronized void myAwesomeFunction (PrintWriter out, String[] data)
{
for (String d : data)
{
out.wait();
out.println (d);
out.flush();
out.notify();
}
}
PrintWriter
最初の文字列の送信が完了するまで待ってから、次の文字列に移動しますか?または私はそれを完全に間違えましたか?
Javaのすべてのオブジェクトをロックとして使用できます。これらのメソッドはObject
クラスから継承され、スレッド間の同期に役立ちます。これらは、PrintWriterの機能とはまったく関係ありません。
println()はブロッキング関数です。最初の文字列の送信が完了するまで(バッファリングを無視して)戻りません。単にこれを書く:
out.println(d);
System.out.println("'d' has finished writing");
同じ効果を達成するために必要なのはそれだけです。wait
andを使用すると、notify
あるスレッドが別のスレッドを待機する場合に役立ちます。通常、同じスレッド内では役に立ちません。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加