天天看點

java多線程原理之--程序與線程的原理分析

想必大家面試應該都會問過這樣一個知識點:什麼是程序,什麼是線程?

想必大家可能都會說的一個回答:

程序是作業系統資源配置設定的基本機關,而線程是cpu排程和執行的基本機關。一個應用程式就是一個程序,一個程序可以有多個線程。。。。。。

你要是這樣回答,遇到一個菜逼面試官可能就混過去了,但是遇到一個資深的大佬,你可能就栽在這個問題上了(哈哈)

那我們現在就從深層次的剖析這個問題,讓這一個問題你可以在面試官面前,多吹十分鐘,哈哈。

我們來看下一個簡單的計算機結構圖吧:

java多線程原理之--程式與線程的原理分析

至于為啥會出現中間一層記憶體,可以看下我的這一篇部落格,有對這個有解釋:https://blog.csdn.net/oldshaui/article/details/89432726

那我們電腦上安裝的一個比心app是一個怎樣存在的呢?

java多線程原理之--程式與線程的原理分析

那下面我們看下程序是作業系統資源配置設定的基本機關,而線程是cpu排程的和執行的基本機關

java多線程原理之--程式與線程的原理分析

我們點選比心APP

java多線程原理之--程式與線程的原理分析

那在linux上這個模型是如何實作的呢?

java多線程原理之--程式與線程的原理分析

那我們java實作多線程:

java多線程原理之--程式與線程的原理分析

我們看下這個模型:

java多線程原理之--程式與線程的原理分析

這個已經很明顯了,程序和線程會共享一些東西,但是棧是不共享的哦

至于為啥要傳Runnable接口,可能是需要傳遞一個位置吧(不然線程切換之後,為啥知道執行到哪了)

繼續閱讀