close
平行處理是一個非常重要的程式設計方法,你幾乎不會不遇到它,在未來越來越多複雜的程式應用中,平行處理一定跑不掉。
「平行處理,我會啊,Java裡面不就不包含有 thread,用它就沒錯了」
沒錯,Java 一開始出來時,在語言層級直接支援 thread,以那時的時空背景,確實是令人眼睛一亮的特色。
「Java有 thread、有 synchronized (lock),還有一大堆豐富的資料結構供我們使用,還不夠嗎?」
以上確實都是使用 Java 撰寫平行處理程式時很重要工具。
可是,你若曾經使用 Java 的 thread 來開發過程式,你會發現並不是那麼好寫。你會遇到不少狀況,不是程式不小心就給你停住deadlock啦),要不就是資料有時對有時不對發生 race condition 了),要讓資料穩穩的走,實在不容易。
以上的這些感覺非常正常,不單是你,這也是大家都困繞擾的問題,因此才會持續有平行處理的解決方案出現。

Java 直到現在仍無法擺脫平行處理的夢靨,不單單是 Java,平行處理幾乎是所有語言面對的共同難題。雖然到了 Java 7,Java 對平行處理的解決方案,仍然顯得不夠完整。
Concurrency 這麼難纏主要的問題出在於共享的資料上,各個 thread 在不同的時間去存取同一個資料,造成資料的不一致。
為要解決這個不一致的問題,lock、critical section 等各種解決方案老早就出現。
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 ryan0988 的頭像
    ryan0988

    尋找最初的初衷

    ryan0988 發表在 痞客邦 留言(0) 人氣()