搜尋
首頁Javajava教程java io為什麼重要

java io為什麼重要

May 29, 2019 pm 04:59 PM
java

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中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境