有点晕。
Java Thread 有 NEW, RUNNABLE, BLOCKED, WAITING, TIMED_WAITING, TERMINATED 六个状态。
比如一个 blocking method ,在这个等待的过程中,这个 thread 到底是什么状态?到底消耗不消耗 CPU , CPU 会被 schedule 到去执行这个线程吗?
举具体的例子,
- Future.get() 等待的过程
- jdbc 存数据
- Thread.sleep()
- http 异步请求?这个我不明白它的原理,销毁当前线程,把这个请求放到一个队列交给一个线程池?那那个真正的『工作线程』在等待请求返回的过程中?具体是什么状态?消耗 CPU 吗?
不甚感谢!