java中io操作会使线程阻塞,那IO操作怎么完成

clipboard.png

场景:main方法开启工作线程A 执行阻塞式read()操作,A进入阻塞状态直到read()方法返回

疑问:

  1. 阻塞期间A无法获得cpu时间片,read()操作怎么执行的?
  2. 为何io操作会使线程阻塞? 我在A线城执行其他耗时操作(比如复杂的数学计算),为何A会一直运行
阅读 5.5k
1 个回答

图片描述

看这个就能知道, 阻塞IO在阻塞时候的操作不是在用户线程执行, 而是操作系统来完成(这个时候Java的线程只能等待), 等操作系统那边准备好数据以后用户线程才继续.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题