走過操做系統的世界來到Java面前

1、完成一個任務須要什麼?

時間 + 資源 + 處理能力操作系統

時間就是時間。線程

資源就是資源。進程

處理能力就是可以利用時間和資源完成任務的主體。內存

2、關於操做系統

處理能力就是cpu。資源

資源就是存儲。虛擬機

時間就是cpu的時間。入門

cpu的處理能力:很快很快。多進程

cpu須要獲取存儲資源:這個過程咱們稱之爲IO,IO很快,可是和cpu相比,它很慢,很慢。程序

因此,cpu

就像一個思想快於嘴巴的人,想要表達的時候,一般都會加上肢體語言,好比手勢,身體。

它能夠同時處理這許多方面的動做。

3、關於任務

任務在操做系統的世界裏,一般對應一個進程,這是cpu處理能力的基本單位。

進程執行期間,須要IO,咱們說過IO相對於cpu的處理能力來講,很慢,因此,若是隻有一個進程,那麼它IO的時候,cpu只能閒着。

閒着就是浪費。

這不符合咱們的指望。

因此。

咱們有了多進程,多任務同時執行。

這樣,一個進程IO的時候,就可讓渡cpu時間給其它的進程,等待IO完成,而後從新等待cpu時間繼續執行。

固然,咱們也須要知悉,這個同時並非所謂的同時。

4、關於時間

時間是進程執行的時間。

時間也是cpu輸出計算能力的時間。

多進程之間須要讓渡時間,那麼就須要有個最基本的時間單位。

咱們稱之爲時間碎片。

5、關於進程

不一樣進程之間相互獨立。

各自加載各自的資源。

各自利用分配給本身的cpu時間碎片來執行任務。

咱們知道,

一個任務可大可小,有複雜有簡單。

按照咱們一般思惟。

此時,一般會有分治。

是的,進程會對任務進行分解,一個大任務分解成不少的小任務。

而執行這些小任務的基本單位,就是線程。

6、關於線程

線程是計算機世界裏最基本的執行單元。

咱們說過,進程之間會有時間碎片的調度。

一樣,在一個進程內部,一樣有不一樣線程之間的調度。

線程對於進程來講,內部資源共享。

因此線程之間,需求的是協做。

線程,也是系統的線程。

7、關於JAVA

Java是一個跨平臺的語言。

因此能跨平臺,是由於它有一個統一的運行空間。

本身創造的統一的運行空間,Java虛擬機-JVM。

虛擬機構造了本身的內存模型,

也有線程。

固然,這個線程不一樣於系統中的線程。

Java程序的任務調度,皆是基於Java的線程調度。

8、關於Java線程

JVM內存模型中最近本的連個單元,堆和棧。

堆是共享堆,棧是線程棧。

線程棧也是線程私有棧。

 

好了,到此爲止,入門完畢。

相關文章
相關標籤/搜索