标题：Wait
Java术语
术语名称：waitwaitpublic final void wait()                 throws InterruptedException在其他线程调用此对象的 notify()方法或 notifyAll()方法前，导致当前线程等待。换句话说，此方法的行为就好像它仅执行 wait(0)调用一样。  当前线程必须拥有此对象监视器。该线程发布对此监视器的所有权并等待，直到其他线程通过调用 notify方法，或 notifyAll方法通知在此对象的监视器上等待的线程醒来。然后该线程将等到重新获得对监视器的所有权后才能继续执行。  对于某一个参数的版本，实现中断和虚假唤醒是可能的，而且此方法应始终在循环中使用： synchronized (obj) { while (<condition does not hold>) obj.wait(); ... // Perform action appropriate to condition      }  此方法只应由作为此对象监视器的所有者的线程来调用。有关线程能够成为监视器所有者的方法的描述，请参阅 notify方法。  抛出：IllegalMonitorStateException- 如果当前线程不是此对象监视器的所有者。  InterruptedException- 如果在当前线程等待通知之前或者正在等待通知时，任何线程中断了当前线程。在抛出此异常时，当前线程的中断状态被清除。waitpublic final void wait(long timeout)                 throws InterruptedException在其他线程调用此对象的 notify()方法或 notifyAll()方法，或者超过指定的时间量前，导致当前线程等待。  当前线程必须拥有此对象监视器。  此方法导致当前线程（称之为 T）将其自身放置在对象的等待集中，然后放弃此对象上的所有同步要求。出于线程调度目的，在发生以下四种情况之一前，线程 T被禁用，且处于休眠状态：  其他某个线程调用此对象的 notify方法，并且线程 T碰巧被任选为被唤醒的线程。  
其他某个线程调用此对象的 notifyAll方法。  
其他某个线程中断线程 T。  
大约已经到达指定的实际时间。但是，如果 timeout为零，则不考虑实际时间，在获得通知前该线程将一直等待。 
然后，从对象的等待集中删除线程 T，并重新进行线程调度。然后，该线程以常规方式与其他线程竞争，以获得在该对象上同步的权利；一旦获得对该对象的控制权，该对象上的所有其同步声明都将被恢复到以前的状态，这就是调用 wait方法时的情况。然后，线程 T从 wait方法的调用中返回。所以，从 wait方法返回时，该对象和线程 T的同步状态与调用 wait方法时的情况完全相同。  在没有被通知、中断或超时的情况下，线程还可以唤醒一个所谓的虚假唤醒(spurious wakeup)。虽然这种情况在实践中很少发生，但是应用程序必须通过以下方式防止其发生，即对应该导致该线程被提醒的条件进行测试，如果不满足该条件，则继续等待。换句话说，等待应总是发生在循环中，如下面的示例： synchronized (obj) { while (<condition does not hold>) obj.wait(timeout); ... // Perform action appropriate to condition      }  （有关这一主题的更多信息，请参阅 Doug Lea 撰写的 Concurrent Programming in Java (Second Edition) (Addison-Wesley, 2000) 中的第 3.2.3 节或 Joshua Bloch 撰写的 Effective Java Programming Language Guide (Addison-Wesley, 2001) 中的第 50 项。  如果当前线程在等待之前或在等待时被任何线程中断，则会抛出 InterruptedException。在按上述形式恢复此对象的锁定状态时才会抛出此异常。  注意，由于 wait方法将当前线程放入了对象的等待集中，所以它只能解除此对象的锁定；可以同步当前线程的任何其他对象在线程等待时仍处于锁定状态。  此方法只应由作为此对象监视器的所有者的线程来调用。有关线程能够成为监视器所有者的方法的描述，请参阅 notify方法。  参数：timeout- 要等待的最长时间（以毫秒为单位）。  抛出：IllegalArgumentException- 如果超时值为负。  IllegalMonitorStateException- 如果当前线程不是此对象监视器的所有者。  InterruptedException- 如果在当前线程等待通知之前或者正在等待通知时，任何线程中断了当前线程。在抛出此异常时，当前线程的中断状态被清除。waitpublic final void wait(long timeout,                        int nanos)                 throws InterruptedException在其他线程调用此对象的 notify()方法或 notifyAll()方法，或者其他某个线程中断当前线程，或者已超过某个实际时间量前，导致当前线程等待。  此方法类似于一个参数的 wait方法，但它允许更好地控制在放弃之前等待通知的时间量。用毫微秒度量的实际时间量可以通过以下公式计算出来：  1000000*timeout+nanos在其他所有方面，此方法执行的操作与带有一个参数的 wait(long)方法相同。需要特别指出的是，wait(0, 0)与 wait(0)相同。  当前线程必须拥有此对象监视器。该线程发布对此监视器的所有权，并等待下面两个条件之一发生：  其他线程通过调用 notify方法，或 notifyAll方法通知在此对象的监视器上等待的线程醒来。  
timeout毫秒值与 nanos毫微秒参数值之和指定的超时时间已用完。 
然后，该线程等到重新获得对监视器的所有权后才能继续执行。  对于某一个参数的版本，实现中断和虚假唤醒是有可能的，并且此方法应始终在循环中使用： synchronized (obj) { while (<condition does not hold>) obj.wait(timeout, nanos); ... // Perform action appropriate to condition      }  此方法只应由作为此对象监视器的所有者的线程来调用。有关线程能够成为监视器所有者的方法的描述，请参阅 notify方法。  参数：timeout- 要等待的最长时间（以毫秒为单位）。  nanos- 额外时间（以毫微秒为单位，范围是 0-999999）。  抛出：IllegalArgumentException- 如果超时值是负数，或者毫微秒值不在 0-999999 范围内。  IllegalMonitorStateException- 如果当前线程不是此对象监视器的所有者。  InterruptedException- 如果在当前线程等待通知之前或者正在等待通知时，任何线程中断了当前线程。在抛出此异常时，当前线程的中断状态被清除。
wait的英文解释
wait [weIt]
n. 等待， 等待时间
v. 等, 耽搁， 等候； 等候, 延缓， 期待
C语言中的wait函数
wait（等待子进程中断或结束）
相关函数 waitpid，fork
表头文件
#include<sys/types.h>
#include<sys/wait.h>
定义函数 pid_t wait (int * status);
函数说明
wait（）会暂时停止目前进程的执行，直到有信号来到或子进程结束。如果在调用wait（）时子进程已经结束，则wait（）会立即返回子进程结束状态值。子进程的结束状态值会由参数status 返回，而子进程的进程识别码也会一起返回。如果不在意结束状态值，则参数status 可以设成NULL。子进程的结束状态值请参考下面的waitpid（）。
返回值
如果执行成功则返回子进程识别码（PID），如果有错误发生则返回-1。失败原因存于errno 中。
附加说明
范例
#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/wait.h>
main()
{
pid_t pid;
int status,i;
if(fork()= =0){
printf(“This is the child process .pid =%d\n”，getpid());
exit(5);
}else{
sleep(1);
printf(“This is the parent process ,wait for child...\n”；
pid=wait(&status);
i=WEXITSTATUS(status);
printf(“child’s pid =%d .exit status=%d\n”，pid,i);
}
}
执行
This is the child process.pid=1501
This is the parent process .wait for child...
child’s pid =1501,exit status =5
waitpid（等待子进程中断或结束）
相关函数 wait，fork
表头文件
#include<sys/types.h>
#include<sys/wait.h>
定义函数 pid_t waitpid(pid_t pid,int * status,int options);
函数说明
waitpid（）会暂时停止目前进程的执行，直到有信号来到或子进程结束。如果在调用wait（）时子进程已经结束，则wait（）会立即返回子进程结束状态值。子进程的结束状态值会由参数status 返回，而子进程的进程识别码也会一快返回。如果不在意结束状态值，则参数status 可以设成NULL。参数pid 为欲等待的子进程识别码，其他数值意义如下：
pid<-1 等待进程组识别码为pid 绝对值的任何子进程。
pid=-1 等待任何子进程，相当于wait（）。
pid=0 等待进程组识别码与目前进程相同的任何子进程。
pid>0 等待任何子进程识别码为pid 的子进程。
参数option 可以为0 或下面的OR 组合：
WNOHANG 如果没有任何已经结束的子进程则马上返回，不予以等待。
WUNTRACED 如果子进程进入暂停执行情况则马上返回，但结束状态不予以理会。
子进程的结束状态返回后存于status，底下有几个宏可判别结束情况：
WIFEXITED（status）如果子进程正常结束则为非0 值。
WEXITSTATUS（status）取得子进程exit（）返回的结束代码，一般会先用WIFEXITED 来判断是否正常结束才能使用此宏。
WIFSIGNALED（status）如果子进程是因为信号而结束则此宏值为真。
WTERMSIG（status）取得子进程因信号而中止的信号代码，一般会先用WIFSIGNALED 来判断后才使用此宏。
WIFSTOPPED（status）如果子进程处于暂停执行情况则此宏值为真。一般只有使用WUNTRACED 时才会有此情况。
WSTOPSIG（status）取得引发子进程暂停的信号代码，一般会先用WIFSTOPPED 来判断后才使用此宏。
返回值
如果执行成功则返回子进程识别码（PID），如果有错误发生则返回-1。失败原因存于errno 中。
用途
等待直到一个进程标识终止。
语法
wait [ ProcessID ... ]
表示状态，时间的延续。
变形：
现在时态过去时态 过去分词现在进行时
wait waited waited waiting
描述
wait 命令等待（暂停执行）直到由ProcessID 变量指定的进程标识终止。如果没有指定ProcessID 变量，wait 命令会等待直到调用 shell 的所有已知进程标识终止并且以0 为退出状态退出。如果ProcessID 变量代表一个未知的进程标识，wait 命令会把它们视为以127 为退出状态退出的已知进程标识。wait 命令以ProcessID 变量指定的上个进程标识的退出状态退出。
标志
ProcessID 指定一个命令的无符号十进制整数进程标识，wait 命令会等待直到该进程标识终止。
退出状态
如果指定一个或多个操作数，所有的操作数终止或不为调用 shell 所知，并且上个操作数指定的状态是已知的，那么 wait 命令的退出状态与上个操作数指定的命令退出状态信息相同。如果进程由于收到信号而异常终止，那么退出状态会大于128 并且与其它信号生成的退出状态信息不同，尽管未指定确切的状态值（请参阅 kill -l 命令选项）。否则，wait 命令会以以下值中的一个退出：
0 以无操作数方式调用 wait 命令，并且调用的 shell 所已知的所有进程标识已经终止。
1-126 wait 命令检测到一个错误。
127 由上一个指定的ProcessID 操作数所标识的命令是未知的。
文件
/usr/bin/wait 包含 wait 命令。

在线观看
.vedio-content{background:#fafafb;padding:6px 0}.vedio-content-ul{margin:0 3px;float:left;display:inline}.vedio-content-ul li{float:left;margin:0 6px;display:inline}.vedio-content-ul li .vedio-link{line-height:1.5;text-align:center;font-size:12px;width:121px;display:block;margin-top:5px}.vedio-content-ul li .pic-show{height:83px;position:relative;border:1px solid #ccc;margin-top:0}.vedio-content-ul li .pic-show:hover{border:1px solid #45a909}.vedio-content-ul li img{height:77px;width:115px;margin:3px}.vedio-content a{text-decoration:none}.vedio-content a:hover{text-decoration:underline}.vedio-content .v-icon{background:transparent url(http://img.baidu.com/img/baike/play.png);position:absolute;left:10px;bottom:10px;height:18px;width:28px}* html .vedio-content .v-icon{background:0;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='http://img.baidu.com/img/baike/play.png')}.vedio-content .vedio-foot{margin:10px 10px 2px;text-align:right;color:#999;font-size:12px}.vedio-content .vedio-foot a{background:transparent url(http://img.baidu.com/img/baike/douban.gif) no-repeat scroll 0 0;margin-bottom:-3px;height:25px;width:70px;display:inline-block;vertical-align:middle}.vedio-content .vedio-foot-sp{margin-right:12px}.vedio-content .vedio-foot-sp a{background:transparent url(http://img.baidu.com/img/baike/bgs4_new.png) no-repeat scroll 0 -290px!important;height:27px;width:74px;margin-left:5px;vertical-align:baseline}.movie-content ul{margin:6px 3px 0}.movie-content .vedio-foot{margin-top:-15px} wait up harriet以上内容来自于