广义上的线程阻塞又可以细分为阻塞和等待两种:
阻塞指线程试图获取的对象锁被其他线程持有导致线程被阻塞,此过程发生在synchronized代码块之外,是被动的。
等待指线程通过调用wait或sleep方法进入等待状态,此过程发生在synchronized代码块之内,是主动的。前者释放了锁,需要另外一个线程在持有同一个对象锁的同步代码块之内调用notify方法唤醒等待线程;后者没有释放锁,在计时结束后自动醒来。
广义上的线程阻塞又可以细分为阻塞和等待两种:
阻塞指线程试图获取的对象锁被其他线程持有导致线程被阻塞,此过程发生在synchronized代码块之外,是被动的。
等待指线程通过调用wait或sleep方法进入等待状态,此过程发生在synchronized代码块之内,是主动的。前者释放了锁,需要另外一个线程在持有同一个对象锁的同步代码块之内调用notify方法唤醒等待线程;后者没有释放锁,在计时结束后自动醒来。