iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 1
4
Software Development

30 天介紹 Java 的 Thread系列 第 1

Day1 為何要介紹 Java Thread

這一次的 IT 鐵人賽要介紹的題目是 Java Thread,會介紹這個題目的主要原因是因為目前是使用 Java 在開發程式,但是常常沒有考慮到多執行緒 (MultiThread) 的部份所以只常寫一些基本的語法,像是 if、for、while….等等的語法,然後去看了一些 open source 專案的程式碼如:Apache Hadoop、Apache HBase、Apache Kafka…..等等的專案,發現有很多地方會使用到 Thread 的程式碼,總是會看不懂程式的意思和目的,需要花一些時間去找資料了解程式的目的。

因為沒有常用多執行緒 (MultiThread) ,所以在開發程式時常常會忘了共享變數要注意執行緒安全的部份。舉個例子來說如果有 Thread1 和 Thread2 二個執行緒同時要存取一個變數的值,有可能會因為執行Thread 的優先順序不同而造成計算出的結果是無法預期,而使程式會出現一些Bug,通常這些 Bug 不太容易會被發現到,程式要執行到上百次或是上千次才會被發現。如果程式太大在 Debug 上也會有一點難度。這也是我想要利用這 30 天來學習 Java Thread 的目的,避免未來在寫 Thread 程式製造出太多 Bug。

最後一個想介紹寫多執行的理由就是因為現在的 CPU 做的愈來愈好,核心的數量也愈來愈多,想體驗一下有開多執行緒和沒開多執行緒在執行程式速度之間的差別。

以下列出預計在這 30 天內主要會介紹的內容:

  • 介紹 Java Thread 和寫簡單的 sample code
  • 介紹 java.util.concurrent 的 package 常用到的 class,這樣有助於閱讀 open source 的 code
  • 在寫 java thread 有一些 pattern 可以參考,因此想介紹常用到的 pattern,如:Immutable Pattern、Balking Pattern、Single Thread Execution Pattern、Guarded Suspension Pattern…等等的內容

下一篇
Day2 介紹常見的名詞以及 Concurrent 和 Parallel 之間的差別
系列文
30 天介紹 Java 的 Thread30

2 則留言

0
Darwin Watterson
iT邦研究生 3 級 ‧ 2018-10-15 10:59:00

Thread 死結(Dead Lock)的問題真的很難解!

所以程式要寫好,才有辦法預防 Dead Lock 的發生

0
stana
iT邦新手 5 級 ‧ 2018-11-13 11:06:55

Guraded Suspension Pattern

It should be Guarded, not Guraded.
Just a typo :D

打錯字了,我來修改

我要留言

立即登入留言