想必大家面試應該都會問過這樣一個知識點:什麼是程序,什麼是線程?
想必大家可能都會說的一個回答:
程序是作業系統資源配置設定的基本機關,而線程是cpu排程和執行的基本機關。一個應用程式就是一個程序,一個程序可以有多個線程。。。。。。
你要是這樣回答,遇到一個菜逼面試官可能就混過去了,但是遇到一個資深的大佬,你可能就栽在這個問題上了(哈哈)
那我們現在就從深層次的剖析這個問題,讓這一個問題你可以在面試官面前,多吹十分鐘,哈哈。
我們來看下一個簡單的計算機結構圖吧:
至于為啥會出現中間一層記憶體,可以看下我的這一篇部落格,有對這個有解釋:https://blog.csdn.net/oldshaui/article/details/89432726
那我們電腦上安裝的一個比心app是一個怎樣存在的呢?
那下面我們看下程序是作業系統資源配置設定的基本機關,而線程是cpu排程的和執行的基本機關
我們點選比心APP
那在linux上這個模型是如何實作的呢?
那我們java實作多線程:
我們看下這個模型:
這個已經很明顯了,程序和線程會共享一些東西,但是棧是不共享的哦
至于為啥要傳Runnable接口,可能是需要傳遞一個位置吧(不然線程切換之後,為啥知道執行到哪了)