一、等待阻塞:
运行的线程调用了wait()方法,会释放锁,JVM会将该线程到等待队列中。
二、同步阻塞:
线程在执行过程中,获取对象的同步锁,发现这个同步锁在被其他线程占用,则JVM会将该线程放入锁池(lock pool)中。
三、其他阻塞:
运行的线程执行join或者sleep方法(wait方法和sleep方法的区别),或者线程发起I/O请求时候,JVM会将线程设置为阻塞状态。当sleep超时,或则join的线程终止或者超时,或者I/O完毕以后,线程就会重新进入可运行状态(线程五种状态)