鍍金池/ 問答/Java  Android  Linux/ java中io操作會使線程阻塞,那IO操作怎么完成

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

clipboard.png

場景:main方法開啟工作線程A 執(zhí)行阻塞式read()操作,A進(jìn)入阻塞狀態(tài)直到read()方法返回

疑問:

  1. 阻塞期間A無法獲得cpu時(shí)間片,read()操作怎么執(zhí)行的?
  2. 為何io操作會使線程阻塞? 我在A線城執(zhí)行其他耗時(shí)操作(比如復(fù)雜的數(shù)學(xué)計(jì)算),為何A會一直運(yùn)行
回答
編輯回答
葬愛

圖片描述

看這個(gè)就能知道, 阻塞IO在阻塞時(shí)候的操作不是在用戶線程執(zhí)行, 而是操作系統(tǒng)來完成(這個(gè)時(shí)候Java的線程只能等待), 等操作系統(tǒng)那邊準(zhǔn)備好數(shù)據(jù)以后用戶線程才繼續(xù).

2018年1月4日 16:33