我阅读了android文档(很明显是泥浆),它说:
等待
使调用线程等到另一个线程调用此对象的notify()或notifyAll()方法。
通知
导致正在等待此对象监视器的线程(通过调用其中一个wait()方法)被唤醒。
这是否意味着:
public synchronized void myAwesomeFunction (PrintWriter out, String[] data)
{
for (String d : data)
{
out.wait();
out.println (d);
out.flush();
out.notify();
}
}
会等到PrintWriter
完成发送第一个字符串然后移到下一个字符串?还是我完全错了?
答案 0 :(得分:2)
Java中的每个对象都可以用作锁。这些方法继承自Object
类,对线程之间的同步很有用。它们与PrintWriter功能完全无关。
println()是一个阻塞函数 - 它在完成发送第一个字符串(忽略缓冲)之前不会返回。只需写下:
out.println(d);
System.out.println("'d' has finished writing");
你需要达到同样的效果吗?当您希望一个线程等待另一个线程时,使用wait
和notify
非常有用,并且在同一个线程中通常不常用。