天天看點

多線程,廚師,飯店,工作之間到底有什麼關系呢?

經常面試的時候,會被問到多線程!知道是怎麼回事,但卻用的很少。

今天,小編帶帶着大家看看身邊的多線程。先将一個工作中遇到的趣事把。

近期比較忙,也在學習多線程。

一日同僚問我:你一天感覺好忙啊,那些事情不能一個個做麼?

我看了他一眼,便問道:你知道多線程嗎?

同僚說:知道呀。用過不少。

我跟着說:我每天很忙的原因呢,是因為很多人同時找我解決需求。是以很忙。為什麼不能一個個做呢?跟你打個比方吧,就跟飯店一樣,同時去很多桌子客人,廚師為什麼不一桌子一桌子上菜,而是一個桌子上一個呢?為了堵住每個桌子人的嘴!也就是說要同時兼顧其他人感受,即提高使用者體驗。

那究竟是怎麼做呢。就是把自己的一個小時分成很多個小的不等時間段。每個時間段去做不同的事情、。有可能抄完一盤菜,有可能隻是下鍋;這時候每個菜呢味道不一樣,是以需要不停的切換炒菜的流程(“切換上下文”)。有時候同時兩個菜可能會同一時間點放調料**(競争資源);就會産生菜的味道串味的線上(線程不安全);同時呢,會額外增加炒菜難度。增加資源消耗,也就是廚師超多個菜的時候,那專注的表情的原因;

為了解決上面的問題:就有了一系列的方案,比如樂觀鎖,悲觀鎖,同步代碼塊,JVM鎖的更新等一系列問題。

工作也是一樣,正是因為多線程處理各個人的需求,是以額外需要花費比常人更多的精力去解決問題。

優點:每個需求都能夠及時的去解決,但未必同一時間解決;至少在能承受範圍内

缺點:比較消耗CPU,也就是忙。

是以呢,這就叫多線程。計算機和人一樣。是以會出現多線程,到現在發展稱多核多CPU。多線程過程中會遇到很多問題,核心就是各個人能力參差不齊,好比磁盤,固态硬碟,記憶體,緩存這幾個讀寫速度不一樣。若想要高效,隻能因材施教。即計算機中的三級緩存。**

打個比方:CPU處理一個請求隻需要10毫秒。但是呢讀寫需要20秒,如果單線程,沒有緩存的話,那将嚴重影響使用者體驗。這就好比是廚師為什麼有一個配菜的。進階廚師呢有很多個配菜一個道理。

。。。。。。。。

聊到這些呢,同僚們都笑了。原來如此

未完待續。。。。。。。。