這幾個概念不好區分,很多網上資料把同步與阻塞解釋得很難區分,今天費點功夫,終於把這些概念給理清了。
同步:同步是指請求發出後,按照方法呼叫的順序執行,方法執行完成後最終返回結果。例如 在main方法中呼叫a() 方法,a方法最終可返回乙個「a」,a方法中呼叫了b辦法,b方法中呼叫了c方法,a方法得等到b方法c方法都執行完之後才能返回乙個a。這就是同步呼叫。
非同步:非同步是指請求發出後,不等待執行結果直接返回。
例如在main方法中呼叫a方法,a方法可以返回"a",a方法中建立執行緒b,b.start(),在run方法中for迴圈輸出1-10000;a方法執行後不會等待b執行緒的,a方法很快就會獲得執行結果。至於b執行緒,你慢慢輸出玩吧。。。
這就是非同步。
在進行分頁查詢的時候,如果資料庫的資料很多,查詢比較慢,頁面會一直轉圈,過幾秒後有結果了,這個就是同布呼叫。我們用的ajax,就是非同步的。應該很清楚了吧。
阻塞:阻塞式指呼叫結果返回之前,當前執行緒會被掛起(停止),只有在得到結果之後才返回。同步執行中並不停止。
非阻塞:
不能夠立刻得到結果,該函式不會阻塞當前執行緒,而會立刻返回。
阻塞,非阻塞,非同步,同步
之前一直對這個概念理不太清楚,今天看到一篇文章感覺不錯 本文 老張愛喝茶,廢話不說,煮開水。出場人物 老張,水壺兩把 普通 水壺,簡稱水壺 會響的水壺,簡稱響水壺 1 老張把水壺放到火上,立等水開。同步阻塞 老張覺得自己有點傻 2 老張把水壺放到火上,去客廳看電視,時不時去廚房看看水開沒有。同步非阻...
同步 非同步 阻塞 非阻塞
故事 老王燒開水。出場人物 老張,水壺兩把 普通水壺,簡稱水壺 會響的水壺,簡稱響水壺 老王想了想,有好幾種等待方式 1.老王用水壺煮水,並且站在那裡,不管水開沒開,每隔一定時間看看水開了沒。同步阻塞 老王想了想,這種方法不夠聰明。2.老王還是用水壺煮水,不再傻傻的站在那裡看水開,跑去寢室上網,但是...
同步 非同步 阻塞 非阻塞
故事 老王燒開水。出場人物 老張,水壺兩把 普通水壺,簡稱水壺 會響的水壺,簡稱響水壺 老王想了想,有好幾種等待方式 1.老王用水壺煮水,並且站在那裡,不管水開沒開,每隔一定時間看看水開了沒。同步阻塞 老王想了想,這種方法不夠聰明。2.老王還是用水壺煮水,不再傻傻的站在那裡看水開,跑去寢室上網,但是...