對於代碼的執行結果,我一直很自信,直到遇到多線程。
01 場景
02 解讀
假如,
我是說假如。
假如你有一個女朋友,
她突然問你,
大神,什麼是多線程呀?
你需要怎樣跟她解釋,
還得讓她能理解透徹。
你想,
你現在就想。
多線程。
你說起來它,頭頭是道。
你用起來它,亂七八糟。
怎樣來生動地描述它呢?
假如你週末在家,
有很多事情要做。
要澆花,
要煮飯,
還要手洗衣服。
如果你用一個單線程。
那麼順序是這樣的:
3分鐘 拿噴壺接水,適量,關閉閥門。
2分鐘 去澆花
3分鐘 拿鍋接水,適量,關閉閥門。
2分鐘 開火煮飯,看著別溢出,米不硬了,關火。
3分鐘 拿洗衣盆接水,適量,關閉閥門。
2分鐘 洗衣服
這樣的話,
你做完全部事情,
需要15分鐘。
如果你用多線程的話,
而你家裡廚房、陽臺、衛生間,
恰好又都有水龍頭,
那麼有些事情你可以同時做:
3分鐘內 廚房、陽臺、衛生間同時放水
2分鐘內 先坐上鍋煮飯,然後去澆花
2分鐘內 澆完花,關了火,去洗衣服
這樣的話,
全部做完需要7分鐘。
想必,
你也看出來了。
多線程危機四伏。
三個地方都嘩嘩接著水,
你看得過來嗎?
煮上飯,你澆花去了,
灶上無人值守這樣好嗎?
生活中,
多線程的高手比比皆是,
因為事情是死的,
人是活的。
而編程,
要比這個複雜的多。
因為事情是活的,
代碼是死的。
我說編程,
事情是活的,
代碼TMD卻是死的!