強(qiáng)烈推薦讀者閱讀文章最后的參考文章,本文只是概括和總結(jié),更詳細(xì)的內(nèi)容參見引用列表。
你也可以在我的 GitHub 里獲得所有文章:https://github.com/didikee/Android-Learning-Report/tree/master/Blog
或者blog :segmentFault & 博客園
其次是為了響應(yīng)之前一篇 Android面試題 的第八道題。-->上篇文章 2017 Android 面試題 [ 基礎(chǔ)與細(xì)節(jié) ]
概念
線程:是操作系統(tǒng)能夠進(jìn)行運(yùn)算調(diào)度的最小單位。是進(jìn)程中的一個(gè)執(zhí)行流程,一個(gè)進(jìn)程中可以運(yùn)行多個(gè)線程。
進(jìn)程:一個(gè)執(zhí)行中的程序的實(shí)例。
進(jìn)程 與 線程 的區(qū)別
一個(gè)程序至少有一個(gè)進(jìn)程,一個(gè)進(jìn)程至少有一個(gè)線程.
線程的劃分尺度小于進(jìn)程,使得多線程程序的并發(fā)性高。
另外,進(jìn)程在執(zhí)行過程中擁有獨(dú)立的內(nèi)存單元,而多個(gè)線程共享內(nèi)存,從而極大地提高了程序的運(yùn)行效率。
線程在執(zhí)行過程中與進(jìn)程還是有區(qū)別的。每個(gè)獨(dú)立的線程有一個(gè)程序運(yùn)行的入口、順序執(zhí)行序列和程序的出口。但是線程不能夠獨(dú)立執(zhí)行,必須依存在應(yīng)用程序中,由應(yīng)用程序提供多個(gè)線程執(zhí)行控制。
從邏輯角度來看,多線程的意義在于一個(gè)應(yīng)用程序中,有多個(gè)執(zhí)行部分可以同時(shí)執(zhí)行。但操作系統(tǒng)并沒有將多個(gè)線程看做多個(gè)獨(dú)立的應(yīng)用,來實(shí)現(xiàn)進(jìn)程的調(diào)度和管理以及資源分配。這就是進(jìn)程和線程的重要區(qū)別。
進(jìn)程是具有一定獨(dú)立功能的程序關(guān)于某個(gè)數(shù)據(jù)集合上的一次運(yùn)行活動(dòng),進(jìn)程是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個(gè)獨(dú)立單位.