> 对于需要处理大量IO请求的任务来说,使用线程是低效的,因为一旦读写IO,线程就必须进入等待状态,直到IO数据返回
这里说的线程进入等待 好像 和Java中线程的状态 并不是一个概念,IO的时候,Java获取到的线程是RUNNABLE。(我已经查过和测试过了)
我能读懂想要表达什么,应该是说,在IO过程中cpu占用率很低。
但是有一点不理解就是Java中的线程运行中的四个状态,与线程对cpu的占用是否有直接关系呢?
WAITING 和 BLOCKED 是不占用cpu的(不会参与cpu的切换),那么IO时,线程是 RUNNABLE,是不是表示这个线程仍然会参与cpu的切换,只是占用cpu很少呢
当然,我对课程原文的理解是,如果IO让线程阻塞,那么线程池中的线程有可能全部占用,就会影响吞吐量,应该是这个意思吧
Sign in to make a reply
大风起兮
> 对于需要处理大量IO请求的任务来说,使用线程是低效的,因为一旦读写IO,线程就必须进入等待状态,直到IO数据返回
这里说的线程进入等待 好像 和Java中线程的状态 并不是一个概念,IO的时候,Java获取到的线程是RUNNABLE。(我已经查过和测试过了)
我能读懂想要表达什么,应该是说,在IO过程中cpu占用率很低。
但是有一点不理解就是Java中的线程运行中的四个状态,与线程对cpu的占用是否有直接关系呢?
WAITING 和 BLOCKED 是不占用cpu的(不会参与cpu的切换),那么IO时,线程是 RUNNABLE,是不是表示这个线程仍然会参与cpu的切换,只是占用cpu很少呢