首頁 > Java > java教程 > 主體

java io為什麼重要

(*-*)浩
發布: 2019-05-29 16:59:21
原創
2399 人瀏覽過

Java的IO流是實現輸入/輸出的基礎,它可以方便實現資料的輸入/輸出操作,並在Java中將不同的輸入/輸出來源抽象表述為"流"。

流是一組有順序的位元組集合,是資料傳輸的總稱或抽象。

流有輸入和輸出,輸入時是流從資料來源流向程式。輸出時是流從程式傳向資料來源,而資料來源可以是內存,文件,網路或程式等。

java io為什麼重要

使用者行程與作業系統核心

#Java 中的IO可以理解為是在Java程式和作業系統核心兩個對象之間進行的。
後面所說的阻塞和非阻塞,同步和非同步都是這兩個物件互動的結果。在本文中,使用者流程指的就是Java程式。

程式空間與核心空間

Waiting for the data to be ready(等待資料到達核心緩衝區)

Copying the data from the kernel to the process(從核心緩衝區拷貝資料到程式緩衝區)

在Linux中,對於一次讀取IO的操作,資料並不會直接拷貝到程式的程式緩衝區。

它首先會被拷貝到作業系統核心的緩衝區中,然後才會從作業系統核心的緩衝區拷貝到應用程式的緩衝區。

程式空間:分配給使用者程式的記憶體空間。

核心空間:核心擁有的記憶體空間。

阻塞與非阻塞

阻塞:使用者行程進行系統呼叫後,使用者行程一直處於鎖定的狀態,不能進行其他動作

#阻塞:使用者程序進行系統呼叫後,使用者程序沒有被鎖定,可以進行其他操作

阻塞和非阻塞說的是使用者程序的狀態,也就是使用者程序是否被鎖定

#同步與非同步

A synchronous I/O operation causes the requesting process to be blocked until that I/O operation completes.
An asynchronous I/O operation does not cause the requesting process to be blocked.

一個同步的io操作會導致發起請求的程序阻塞直到這個io操作完成。一個非同步的io操作不會導致請求的執行緒被阻塞。

同步:用戶執行緒和io執行緒做同一件事(用戶執行緒被阻塞,等待內核返回處理結果)

非同步:用戶執行緒和io執行緒做不同的事情(用戶執行緒不被阻塞,做其他的事情,內核處理完成發送結果給用戶線程)

檔案描述子

在Linux下面一切皆檔案。文件描述符(file descriptor)是核心為文件所建立的索引,所有I/O操作都透過呼叫檔案描述符(索引)來執行,包括下面我們要提到的socket。 Linux剛啟動的時候會自動設定0是標準輸入,1是標準輸出,2是標準錯誤。

以上是java io為什麼重要的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!