技術學習記錄

什麼是程式、程序、執行緒

前言

程式、程序、執行緒是什麼?彼此之間又有什麼關係?

老實說這個問題我從來都沒有思考過。

直到最近計畫跳槽之後面試了幾間公司才發現,這個題目很多公司時面試時會問。

於是趁現在趕快理解清楚。

程式、程序、執行緒

程式(Program):一群程式碼的集合,用來解決特定的問題。也就是我們所撰寫的類別(Class)。

程序(Process):是執行中的程式。

執行緒(Thread):程序中最小的執行單位,負責執行目前程序中的程式碼。

通常一個程序中,至少會有一個執行緒在運作,且程序可以包含多個執行緒進行分工。

多執行緒

前面提到過:通常一個程序中,至少會有一個執行緒在運作。而這個執行緒被稱為主執行緒(或稱 UI 執行緒),負責應用程式和使用者的交互。

如果我們在主執行緒進行一些長時間的操作(比如說下載檔案之類的功能),很有可能造成主執行緒卡住,這時候如果使用者和應用程式互動(例如按下某個按鈕),則會發現畫面整個卡死(ANR)沒有反應,造成使用者體驗變差。

ANR

ANR的全名是Application is Not Responding,應用程式沒有回應。

當 Android 應用程式的 UI 執行緒被一些需要長時間的操作行為卡住,導致沒有回應時,就會觸發 ANR。

如下圖所示(借用 Android Developers 官網的圖片):

图 1. 向用户显示的 ANR 对话框

關於 ANR 的更詳細介紹,請參考 Android Developers 官網

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *