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

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

clipboard.png

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

疑問:

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

圖片描述

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

2018年1月4日 16:33