sleep是线程什么也不做,等一个时间
wait是等待其它线程用notify唤醒,直到超过wait方法中指定的时间

解决方案 »

  1.   

    sleep 会自动唤醒
    wait  是必须notify唤醒sleep是人为地调用,wait除了人为地调用外,线程可能由于I/O阻塞造成的wait不可以运行状态是由可运行状态转变过来的,一个可运行状态的线程如果遇到挂起(suspend)
    操作、等待(sleep)操作、睡眠(sleep)操作,就会进入不可运行状态。另外如果一个线程跟I/O操作有关,外设的速度远远低于处理器的速度,所以线程可能被阻塞,从而进入不可运行状态。外设处理完后,该线程会自动进入可运行状态。通常由三种途径可以把一个不可运行的状态转为可运行状态。一是自动恢复,通过sleep或者由于I/O阻塞造成的not runnable可以自动恢复;二是由resumen来恢复到可运行状态(由suspend挂起);三是由notify方法来恢复处于wait的线程。
      

  2.   

    sleep()方法是使线程停止一段时间的方法.在sleep 时间间隔期满后,线程就不一定会立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非“醒来”的线程具有更高的优先级正在运行的线程因为其它原因而阻塞。wait()是线程交互时,如果线程对一个同步对象x 发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。
      

  3.   

    sleep是睡觉,wait是等人。从字面上就理解了。
      

  4.   

    sleep() : 时间到达后未必启动,取决于当时正在运行的各线程的优先级
    wait() : 时间到达后立刻启动