Java併發編程之同步與異步、阻塞與非阻塞

同步與異步

  • 被調用者是否主動告訴調用者結果,針對被調用者而言
  • 左圖是同步的情況:客戶端向服務器請求數據,在服務器準備數據期間,客戶端需要不停的等待,無法做別的事
  • 右圖是異步的情況:客戶端向服務器請求數據,在服務器準備數據期間,客戶端可以做其他的事情,直到服務器返回這個結果
    在這裏插入圖片描述

阻塞與非阻塞

  • 調用者在調用結果返回前,是否還能做別的事,針對調用者而言
  • 線程狀態角度:是線程六中狀態的其中三種(Block、Waiting、Time_Waiting),就是指線程在阻塞狀態下,就不能繼續執行了,需要等待其他線程來喚醒
  • 線程發出請求(HTTP)角度:如果是阻塞的,那麼發出請求方就什麼都幹不了只能等待;如果是非阻塞,發出請求方就可以在此期間做別的事
  • 同步阻塞:調用者在被調用者結果返回前一直等待,被調用者不會主動返回結果
  • 異步非阻塞:調用者在結果返回前不用等待,可以做別的事,被調用者主動返回結果
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章