iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 2
2
Software Development

30 天介紹 Java 的 Thread系列 第 2

Day2 介紹常見的名詞以及 Concurrent 和 Parallel 之間的差別

  • 分享至 

  • xImage
  •  

1.介紹 Program、Process、Thread 之間的關係:
當我們在把程式寫完並且把程式 Compiler 出來成可以執行的程式這個就會稱為 Program,例如是 javac test1.java 這個檔案會編譯成 test1.class 的檔案就是一個 Program,當我們執行了 test1.class 這個程式就會被稱為 Process,例如 java test1 的指令。java test1 的指令可以讓我們執行很多次,因此一個 Program 會可以有多個 Process。

在執行一個 Process 大概會有 Memory Space 和 Thread 這二個部份, Memory Space 用來進行變數的存取, Thread 就是屬於 CPU 運算的部份。Process 和 Process 之間的變數不能互相共享使用。一個 Process 可以啟動多個 Thread 的 CPU 資源,Thread 和 Thread 之間的變數可以互相共享使用,另外 Thread 又被稱為 Light Weight Process 輕量的 Process。

2.以下是拿多執行緒常做的事:

  • 用來做 Service 使用:當有一個 Client 的 Request 連進來的時侯,就會在 Service 的 Process 上啟動一個 Thread,結束連線時就會把 Thread 關掉。

  • 當遇到很多的 IO 處理時:例如要把一個很大的資料寫入到資料庫或是 File System 時,如果只用一個 main 程式去做的話,就會阻礙到後面程式的執行,所以應該要另外去開一個 Thread 去做寫入資料的動作,才能增加程式的執行效率。

3.Concurrent 和 Parallel 之間的差異:
Concurrent 和 Parallel 常常會讓人搞不太清礎,以下來簡單的介紹:

  • Concurrent:Concurrent 主要是一個 CPU 會去做多件事,但是同一個時間點之內只會做一件事,舉例來說一個人可能會去做 Job1、Job2、Job3這三件事,但是在一個時間點內只會做一個 Job,像是早上做 Job1、下午做 Job2、晚上做 Job3不斷的切換。Concurrent 的目標是希望能做更多的事。

  • Parallel: Parallel 主要是會有多個 CPU 在同一個時間點內會去做多件事,例如會有三個人同時分別在做 Job1、Job2、Job3 的事情。因此 Parallel 的目標是希望能把事情更快速的做完。


上一篇
Day1 為何要介紹 Java Thread
下一篇
Day3:寫簡單 Java Thread Sample Code (一)
系列文
30 天介紹 Java 的 Thread30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言