簡介
阻塞、非阻塞(程式在io時,數據未準備好的行為)
- 阻塞和非阻塞主要關注的是等待結果返回調用方的狀態
- 阻塞:原地等待
- 非阻塞:直接返回,等下再來或是等待通知
- 阻塞:是指結果返回之前,當前線程被掛起,不做任何事
- 非阻塞:是指結果在返回之前,線程可以做一些其他事,不會被掛起。
同步.異步(程式與OS,在IO所採用的方式)
- 同步和異步關注的是結果消息的通信機制
- 同步:參與IO,等待(阻塞)處理完成,資料處理完成後OS把IO流阻塞,或是一直輪詢問是否完成
- 異步:操作系統處理,輪詢、事件監聽
- 同步:同步的意思就是調用方需要主動等待結果的返回
- 異步:異步的意思就是不需要主動等待結果的返回,而是通過其他手段比如,狀態通知,回調函數等。
內容
select epoll
io
- stream
- 裝飾設計模式(頂層接口,每個子類都持有一個相同接口的引用)
- inputStream
- 節點流(FileInputStream)
- 緩衝流(BufferInputStream)
nio
- select
- channel
- buffer
- limit
- capacity
- position
ByteBuffer
- asReadOnlyBuffer
- compact
- allocate-HeapByteBuffer
- allocateDirect(zero copy)-DirectByteBuffer
參考資料