PrintWriter 的 wait 和 notify 方法有什么作用?
PrintWriter what do wait and notify methods do?
我读了 android 文档(很清楚),它说:
等等
Causes the calling thread to wait until another thread calls the notify() or notifyAll() method of this object.
通知
Causes a thread which is waiting on this object's monitor (by means of calling one of the wait() methods) to be woken up.
这是否意味着:
public synchronized void myAwesomeFunction (PrintWriter out, String[] data)
{
for (String d : data)
{
out.wait();
out.println (d);
out.flush();
out.notify();
}
}
会等到 PrintWriter
发送完第一个字符串然后移动到下一个吗?还是我完全弄错了?
Java中的每个对象都可以用作锁。这些方法继承自Object
class,对线程间的同步很有用。它们与 PrintWriter 功能完全无关。
println() 是一个阻塞函数 - 它不会 return 直到它完成第一个字符串的发送(忽略缓冲)。简单地写这个:
out.println(d);
System.out.println("'d' has finished writing");
你只需要达到同样的效果。当您希望一个线程等待另一个线程时,使用 wait
和 notify
很有用,但在同一线程中通常没有用。
我读了 android 文档(很清楚),它说:
等等
Causes the calling thread to wait until another thread calls the notify() or notifyAll() method of this object.
通知
Causes a thread which is waiting on this object's monitor (by means of calling one of the wait() methods) to be woken up.
这是否意味着:
public synchronized void myAwesomeFunction (PrintWriter out, String[] data)
{
for (String d : data)
{
out.wait();
out.println (d);
out.flush();
out.notify();
}
}
会等到 PrintWriter
发送完第一个字符串然后移动到下一个吗?还是我完全弄错了?
Java中的每个对象都可以用作锁。这些方法继承自Object
class,对线程间的同步很有用。它们与 PrintWriter 功能完全无关。
println() 是一个阻塞函数 - 它不会 return 直到它完成第一个字符串的发送(忽略缓冲)。简单地写这个:
out.println(d);
System.out.println("'d' has finished writing");
你只需要达到同样的效果。当您希望一个线程等待另一个线程时,使用 wait
和 notify
很有用,但在同一线程中通常没有用。