Object类
wait():阻塞挂起当前线程,直到其他线程调用motify/notifyAll或者线程的interrupt()方法,抛出InterruptedException异常才返回
wait(long timeout):当线程没有在timeout时间内被其它线程唤醒则超时返回
notify()/notifyAll():随机唤醒一个/唤醒所有在共享变量上调用wait系列方法后被挂起的线程
Thread类
join():线程A执行thread.join()时会等待thread线程的run方法执行完成后才继续执行
sleep(long millis)
yield():静态方法,让出CPU,有可能立马又得到CPU调度
interrupt():中断线程并设置中断标志为true,使wait、join、sleep抛出InterruptedException,不停止线程。需要捕获异常处理
isInterrupted():检测线程中断。不清除中断标志位
interrupted():检测线程中断,清除中断标志位。线程被中断时只会第一次返回true
wait是Object实例方法,sleep是Thread的静态方法
wait必须在同步方法或者同步块中调用(必须已获得对象锁)。否则抛出IllegalMonitorStateException,sleep没有限制
都让出CPU,wait释放占有的对象锁。sleep不会释放掉对象锁
wait必须等待Object.notify/notifyAll通知或者wait()等待时间到期后获得CPU时间片继续执行,sleep在休眠时间达到后获得CPU时间片继续执行