小夥伴們大家好啊,這裏是布丁薩瑪,JAVA多線程也是面試的常客,所以爲了之後的面試,也爲了使自己能夠更好的(zhuang)步(bi)。所以我們一期來看一下什麼是多線程。
因爲自己也是初學者,並且沒有什麼項目實習的經驗,所以寫出來的東西都是自己理解到的東西,但是我們儘量已輕鬆的方式給小夥伴們講出來,如果有什麼不對的地方,歡迎大家在評論區指(si)出(bi),謝謝。
ok,我們開始吧。
在學習之前,我們首先要搞清楚兩個問題。
- 什麼是多線程?
- 我們爲什麼要學習多線程?
只有搞清楚這兩個問題之後我們才能夠有目的的去學習。
什麼是線程?
什麼是線程?
按照官方的定義:
-
是一個程序就是一個
進程
,而一個程序中的多個任務則被稱爲線程
。 -
進程是表示資源分配的基本單位,線程是進程中執行運算的最小單位,亦是調度運行的基本單位。
前方持續高能!!!!
SO?WHAT?
這是啥?
啥玩意?
看不懂啊?
咋能啊?
相信有的小夥伴會和筆者一樣剛看到的時候是懵逼的。
沒錯,說的就是你
OK,沒關係。
今天呢,在我們現場,我們請到了世界著名
嘉賓,人類最應該感謝得人,被筆者評爲世界十大最受委屈
的人。
那就是 當當當當
廁所先生
鼓掌 👏👏👏👏👏
廁所先生:大家好,我是廁所先生,今天很高興,能來到布丁的節目。我要感謝我的母親
布丁:好了好了,廁所先生不要說了,說正經的。
廁所先生:
- 這裏呢我們就可以把一個廁所當做一個進程,然後呢。裏面有好多坑,我們就可以把裏面的一個一個坑當做一個線程。而線程就是廁所裏面最小的單位。
所以大家只需要記住
廁所=進程
坑=線程
布丁:正如廁所先生所說,線程就是一個坑。但是呢沒有這個坑又不行。沒有坑那就不是廁所了。
所以程序=屎。所以大家辭職吧。不要寫程序了。
布丁:好了我們說正經的。
假如進程是一間宿舍那麼線程是什麼?
是牀
假如進程是一間餐廳那麼線程又是什麼?
是桌子
假如進程是一個廚房那麼線程是什麼?
是爐竈
Ok,相信經過上面的這些東西的洗禮,我們就可以大致知道線程
和進程
都有一些什麼特點了。
這裏我總結了4點。
- 1、進程只能有一個,線程可以有n個
- 2、進程包含線程
- 3、多個線程可以同時執行
- 4、多個線程之間不會互相影響
- 5、進程結束,線程必定結束
關於上面幾點,我們就用我們就請出我們最尊貴的廁所
來解釋一下。
鼓掌 👏👏👏👏👏👏
布丁:那麼請問廁所先生,您對於上面幾點有什麼想說的呢?
廁所:幹於以上給點,鵝覺得所的灰常得。
布丁:咳咳,廁所先生,麻煩您先衝下廁所再說話。
廁所先生:嘩啦啦~~,咳咳,關於以上幾點啊,我覺得說的非常對。
-
一個廁所最少要有一個坑,否則就不是廁所。
-
同時我的每個坑都可以同時使用。如果一個坑炸了,別的坑也可以使用。
-
但是如果廁所炸了那麼坑也就不能用了。
布丁:好的,廁所先生說的非常好。如果還有小夥伴不懂得話,麻煩出門左轉去廁所體驗一下。
OK,我們第一個問題說完了,那麼我們來講第二個問題吧。
我們爲什麼要學習線程?
廁所先生:要說多線程是幹什麼用的,又爲什麼需要多線程呢?那麼就要從拉屎開始說起了。
廁所先生:就比如說我裏面只有一個坑。但是呢,恰逢當前學校做的飯有點問題。一個班的同學都拉肚子了。
- 如果是單線程的情況那麼一個同學去拉屎了,然後其他同學就只能等着,如果這個同學拉的快還好說,如果不快,那不就尷尬了。是吧。
- 這裏呢如果我們有了多線程的話,那就會多好多的坑,
- 那麼同學們就可以愉快的一起上廁所了,你不影響我,我不影響你。
這就是多線程的好處。我們使用多線程就可以使我們程序效率更高。
布丁:那爲什麼不建個幾百個坑啊,那豈不更快?
廁所先生:我沒意見啊。那到時候整個學校怕不如直接改名叫廁所得了。
布丁:我明白了,線程多是會佔用我們的資源的。所以我們要在性能和資源之間找到一個平衡點
。
廁所先生:沒錯,就是這樣。
布丁:OK,感謝這一期廁所先生的做客,以他自身的經歷給我們講了
- 什麼是多線程?
廁所=線程 坑=進程 - 我們爲什麼要使用多線程?
爲了防止拉屎等很久
那麼本期就到此結束了,我們下一期就來講下如何實現多線程,到時候可能還需要廁所先生來做客。小夥伴們有什麼想說的。可以在評論區告訴我們。謝謝。