阻塞状态。
用户创建的进程都是前台进程;前台进程从键盘读取数据,并把处理结果输出到显示器。我们可以看到前台进程的运行过程。
阻塞状态代码不继续执行,而在等待,阻塞解除后,重新进入就绪状态。也就是说,阻塞状态发生肯能是运行状态转过去的,运行状态- >阻塞状态,不会从就绪状态转过去。
当线程试图获取某个对象的同步锁时,如果该锁被其他线程所持有,则当前线程会进入阻塞状态,如果想从阻塞状态进入就绪状态必须得获取到其他线程所持有的锁。
当线程调用了一个阻塞式的IO方法时,该线程就会进入阻塞状态,如果想进入就绪状态就必须要等到这个阻塞的IO方法返回。
当线程调用了某个对象的wait()方法时,也会使线程进入阻塞状态,如果想进入就绪状态就需要使用notify()方法唤醒该线程。
当线程调用了Thread的sleep(longmillis)方法时,也会使线程进入阻塞状态,在这种情况下,只需等到线程睡眠的时间到了以后,线程就会自动进入就绪状态。
当在一个线程中调用了另一个线程的join()方法时,会使当前线程进入阻塞状态,在这种情况下,需要等到新加入的线程运行结束后才会结束阻塞状态,进入就绪状态。