sleep( )方法
使线程在一定的时间内进入阻塞状态,不能得到cpu时间,但不会释放锁资源。指定的时间一过,线程重新进入可执行状态。
wait( ) 方法
使线程进入阻塞状态,同时释放自己占有的锁资源,和notify( )搭配使用。
suspend( )方法
使线程进入阻塞状态,并且不会自动恢复,必须其对应的resume( )被调用,才能使线程重新进入可执行状态,(不建议用,容易发生死锁,该方法已被JDK弃用)。
join()方法
当主线程开启一个或多个子线程的时候,使用join方法,必须等该线程运行结束,主线程或其他子线程才由阻塞状态转为可执行状态。
通过Lock接口和Condition实现等待/通知机制
Java 5以后,可以使用Lock接口和Condition接口来实现等待/通知的高级用法。线程调用Condition的await()方法后会进入阻塞状态,直到其他线程调用Condition的signal()方法或signalAll()方法唤醒线程。
调用某些阻塞I/O方法
当线程执行阻塞I/O操作时(例如读取未就绪的Socket数据),线程会进入阻塞状态,直到I/O操作完成。