服務Service與執行緒Thread的區別

2021-10-01 08:57:29 字數 742 閱讀 5079

1,兩者概念的迥異

thread 是程式執行的最小單元,它是分配cpu的基本單位,android系統中ui執行緒也是執行緒的一種,當然thread還可以用於執行一些耗時非同步的操作。

service是android的一種機制,服務是執行在主線程上的,它是由系統程序託管。它與其他元件之間的通訊類似於client和server,是一種輕量級的ipc通訊,這種通訊的載體是binder,它是在linux層交換資訊的一種ipc,而所謂的service後台任務只不過是指沒有ui的元件罷了。

2,兩者的執行任務迥異

在android系統中,執行緒一般指的是工作執行緒(即後台執行緒),而主線程是一種特殊的工作執行緒,它負責將事件分派給相應的使用者介面小工具,如繪圖事件及事件響應,因此為了保證應用 ui 的響應能力主線程上不可執行耗時操作。如果執行的操作不能很快完成,則應確保它們在單獨的工作執行緒執行。

service 則是android系統中的元件,一般情況下它執行於主線程中,因此在service中是不可以執行耗時操作的,否則系統會報anr異常,之所以稱service為後台服務,大部分原因是它本身沒有ui,使用者無法感知(當然也可以利用某些手段讓使用者知道),但如果需要讓service執行耗時任務,可在service中開啟單獨執行緒去執行。

3,兩者使用場景

當要執行耗時的網路或者資料庫查詢以及其他阻塞ui執行緒或密集使用cpu的任務時,都應該使用工作執行緒(thread),這樣才能保證ui執行緒不被占用而影響使用者體驗。

4,兩者的最佳使用方式

5,兩者的真正關係

JAVA多執行緒之Runnable和Thread比較

在我們開發的過程中常常會碰到多執行緒的問題,對於多執行緒的實現方式主要有兩種 實現runnable介面 繼承thread類。對於這兩種多執行緒的實現方式也是有著一些差異。既然實現了多執行緒那必然離不開管理這些執行緒,當問題比簡單時乙個或者幾個執行緒就ok了,也涉及不到效率問題。一旦執行緒數量多起來的...

Service 服務基礎學習

service 作為和activity一樣作為4大元件之一,也是利用intent來跳轉的。service有2種方式啟動,一種是直接start,生命週期是oncreate onstartcommand ondestory 還有一種則是繫結的方式啟動。bind繫結的用法 入下,首先新建乙個類繼承serv...

php fpm新增service服務

nginx通過fastcgi執行php比apache包含php環境有明顯的優勢,最近有訊息稱,php5.4將很有可能把php fpm補丁包含在核心裡,nginx伺服器平台上執行php將更加輕鬆,下面我們就來看一篇php fpm平滑啟動並配置服務例子。我的php是原始碼安裝的。php fpm在php ...