1.wait()和sleep()的区别
A.wait()方法属于Object对象的,而sleep()方法是Thread类的静态方法。wait()方法的调用必须 在synchronized的方法或代码块里,否则会抛IllegalMonitorStateException异常,而sleep() 方法没有这个限制。 B.wait()方法可以被唤醒通过notify()或notifyAll()方法。 C.调用wait()方法时会释放对象的Lock or monitor,但是调研sleep()方法不会释放对象的Lock or monitor,尽管两者都使得Thread处于waiting状态。
2.yield()和sleep()的区别
A.yield()方法暂时挂起当前正在执行的线程为了给正在[等待的][具有相同的优先级的]线程机会执行。 如果没有等待的线程或者在等待的线程的优先级都低于该线程,则该线程将继续执行。所以yield()方法 不能保证挂起当前线程,但能保证该线程让出cpu资源。但是sleep()方法挂起当前线程一定的时间(毫秒 +纳秒)。