1. 程式人生 > >@程式設計師,別再迷戀多執行緒工作了

@程式設計師,別再迷戀多執行緒工作了

我剛剛嘗試了一下,一邊用 iPad 看“Java 極客技術”自制的 SpringBoot 視訊(1.2X 倍速),一邊在 iMac 上回復部落格上讀者的留言。過了一會,視訊上講了什麼,我完全沒有印象了;而回復的內容也寫得亂七八糟。

很長一段時間內,我都在欺騙我自己:一邊寫部落格,一邊聽音樂,自認為可以一心多用,做到了像計算機一樣的“多執行緒工作”。可等到音樂的某個高潮響起時,我情不自禁地投入到了音樂的世界中,卻完全忘了部落格接下來應該寫的主題。於是只能狠狠地把音樂關掉,重新讀一遍計劃好的內容大綱,尋找新的寫作靈感(之前的靈感已經杳無音訊了)。

像我這樣自作聰明的人應該不在少數,但實際上我們只是在幾個不同的任務之間快速地進行切換。當切換的頻率過高的時候,我們的創造力就會下降得越快,我們浪費的時間就越多,我們學習的效率就會越低。

假如你要反駁,說自己在打發時間,那請你自便。

01、為什麼我們會迷戀多執行緒工作

“人生苦短,我愛多執行緒”——這恐怕是我們迷戀多執行緒工作的主要原因了。想一想手頭那麼多事情要做,而我們又分身乏術,不能像孫悟空那樣拔一根猴毛就能複製一個戰鬥力滿滿的自己,就只能硬著頭皮 new Thread().start() 了。

就我們程式設計師來說,開啟手機,掘金社群上的小冊在向我招手,極客XX的課程在向我拋媚眼,GitChat 的小課在向我暗送秋波,就連XX星球也在喊我過去。在我們猶豫再三的時候,奇妙清單提示我,專案要 deadline 了,於是我們只能搖搖頭,忍不住嘆了一口氣。

是這樣的,生命是短暫的,可我們要做的事情實在是太多了。況且多執行緒工作會讓我們上癮,因為“當完成一項小任務時,我們會受到多巴胺的衝擊,也就是我們的獎勵激素。大腦喜歡多巴胺,於是我們被鼓勵不停地在一些能給予自己即時滿足感的微小任務之間切換。”

可多執行緒工作在大多數情況下給我們帶來的是負面的影響。計算機在處理多執行緒任務時可以通過追加 CPU 的核數來提高程式的執行效率。但我們並不是計算機。

02、多執行緒工作嚴重影響工作效率

當一個程式設計師在全力程式設計的時候,腦袋裡同時記著數不勝數的東西,包括變數名、方法名、重要的介面、資料結構,還有他們自己的常用元件庫。如果送這個程式設計師去侏羅紀公園度假一個月,保準他會把這些東西忘得一乾二淨。

在高效程式設計的時候,腦袋裡的那些東西就好像儲存在計算機的 RAM 上,等到其他的任務切換進來的時候,這些東西就不得不轉移到別的地方(比如計算機上的磁碟)備份起來,等重新切回到原來的任務上時,就需要花費巨大的精力重新恢復了。

不知道你有沒有這種感覺,我是有的。我特別討厭在聚精會神編碼的時候,突然殺來一個電話,讓你措手不及,尤其是廣告營銷的,忍不住要痛罵他們幾句,然後加入黑名單。有時候很不幸,來電顯示打來電話的人是老闆,就不得不扼殺住想要爆發的怒火。可怒火是扼殺了,敲程式碼的那種快感也被扼殺了。

2011 年加利福尼亞大學發表的一篇研究報告展示了“快速地從一項任務切換到另一項任務”是怎樣影響我們記憶的。研究者們表示,多執行緒工作對人的“工作記憶”有著消極的影響。工作記憶是指一段時間內在大腦中儲存和處理資訊的能力,它是一切思維活動的基礎,也是學習的第一步。

當我們能夠專注做一件事情的時候,工作記憶就不太容易受到影響。但受限於工作場合,網際網路公司尤其鍾愛開放式的辦公室,大家匯聚一堂,感覺彼此之間充滿真愛。但大量吵雜的聲音,嚴重影響著我們的工作效率,於是夜深人靜加班的時候,工作效率是最高的。

03、多執行緒工作會扼殺創造力

神經科學家厄爾·米勒(Earl Miller)表示多執行緒工作會扼殺創造力,“創新的想法,歸根到底來源於深度的注意集中。當我們嘗試多執行緒工作時,基本不會在任何一條能發現原創東西的道路上走的足夠遠,因為我們在不停地切換和回溯。”

當我在上下班的路上騎自行車的時候,我發現戴著消噪耳機聽音樂是一件非常美妙的事情。不僅可以把馬路上嘈雜的聲音隔離開來,還能夠消磨掉時光。

而當我在寫部落格的時候,聽音樂就適得其反了。這是因為騎自行車本身並不是一件需要創造力才能完成的事情,而寫部落格則需要聚精會神才能把腦袋裡的所見所聞流暢地梳理出來。

也就是說,當我們需要創造力的時候,最有效的做法就是移除干擾物,把手機調成飛航模式,把一些軟體的通知禁掉,把門窗關閉等等。儘量專心地完成當前的任務。

這並不簡單,但是非常值得去做。

04、最後

我需要告誡大家一句:當我們正在做的一個任務還沒有完成的時候,下一個任務來臨的時候一定要勇敢說“不”,坦率地告知派發任務的領導,讓他保持清醒。

假如說不出口,那也要一個一個來。切記不要高估我們自身的能力,畢竟我們是人,不是計算機,沒辦法把我們的腦袋改造成多核的。總之一句話:程式設計師,別再迷戀多執行緒工作的鬼話了。

05、鳴謝

好了各位讀者朋友們,以上就是本文的全部內容了。能看到這裡的都是最優秀的程式設計師,二哥必須要伸出大拇指為你點個贊